diff --git a/demo/public/decoder.js b/demo/public/decoder.js index f6edb991..ace411a4 100644 --- a/demo/public/decoder.js +++ b/demo/public/decoder.js @@ -7540,7 +7540,9 @@ recordType: FILE_SUFFIX.webm, useWebFullScreen: false, // use web full screen - loadingDecoderWorkerTimeout: 10 // + loadingDecoderWorkerTimeout: 10, + // + autoUseSystemFullScreen: true // auto system full screen }; const WORKER_CMD_TYPE = { diff --git a/demo/public/decoder.js.map b/demo/public/decoder.js.map index 236df5f1..1f79c9a3 100644 --- a/demo/public/decoder.js.map +++ b/demo/public/decoder.js.map @@ -1 +1 @@ -{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: false,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n loadingDecoderWorkerTimeout: 10 //\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 volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError: 'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\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 isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jb: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jb: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jb: [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('Jb: [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('Jb: [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('Jb: [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('Jb: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n else {\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jb: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","loadingDecoderWorkerTimeout","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: false,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n loadingDecoderWorkerTimeout: 10, //\n autoUseSystemFullScreen: true, // auto system full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError: 'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError',\n webglContextLostError: 'webglContextLostError',\n\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\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 isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jb: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jb: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jb: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jb: [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('Jb: [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('Jb: [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('Jb: [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('Jb: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jb: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n else {\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jb: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","loadingDecoderWorkerTimeout","autoUseSystemFullScreen","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/dist.zip b/demo/public/dist.zip index d501bc22..5eff2e0a 100644 Binary files a/demo/public/dist.zip and b/demo/public/dist.zip differ diff --git a/demo/public/jessibuca.js b/demo/public/jessibuca.js index 4d09dee8..a8104434 100644 --- a/demo/public/jessibuca.js +++ b/demo/public/jessibuca.js @@ -50,7 +50,7 @@ webm: 'webm' }; const CONTAINER_DATA_SET_KEY = 'jessibuca'; - const VERSION = '"3.2.9"'; // default player options + const VERSION = '"3.2.12"'; // default player options const DEFAULT_PLAYER_OPTIONS = { videoBuffer: 1000, @@ -135,7 +135,9 @@ recordType: FILE_SUFFIX.webm, useWebFullScreen: false, // use web full screen - loadingDecoderWorkerTimeout: 10 // + loadingDecoderWorkerTimeout: 10, + // + autoUseSystemFullScreen: true // auto system full screen }; const WORKER_CMD_TYPE = { @@ -261,7 +263,8 @@ mediaSourceBufferListLarge: 'mediaSourceBufferListLarge', mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout', wasmDecodeError: 'wasmDecodeError', - webglAlignmentError: 'webglAlignmentError' + webglAlignmentError: 'webglAlignmentError', + webglContextLostError: 'webglContextLostError' }; const WEBSOCKET_STATUS = { notConnect: 'notConnect', @@ -1520,6 +1523,7 @@ this.contextGlDestroy = null; this.bitmaprenderer = null; this.renderType = null; + this.isContextGlRenderLost = false; this.videoInfo = { width: '', height: '', @@ -1553,6 +1557,7 @@ } this.renderType = null; + this.isContextGlRenderLost = false; this.player.debug.log(`CanvasVideoLoader`, 'destroy'); } @@ -1614,7 +1619,18 @@ break; case CANVAS_RENDER_TYPE.webgl: - this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]); + if (this.isContextGlRenderLost) { + return; + } + + try { + this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]); + } catch (e) { + this.player.debug.error('CanvasVideoLoader', 'render', e); + this.isContextGlRenderLost = true; + this.player.emitError(EVENTS_ERROR.webglContextLostError); + } + break; case CANVAS_RENDER_TYPE.webcodecs: @@ -10758,7 +10774,7 @@ } } - var css_248z$1 = "@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;-webkit-user-select:none;user-select:none}.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,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAHHklEQVRoQ91bfYwdVRX/nTvbPuuqlEQM0q4IRYMSP0KkaNTEEAokNUEDFr9iEIOiuCC2++4dl+Tti9nOmbfWFgryESPhH7V+IIpG8SN+Fr8qqKgQEKoUkQREwXTLs8495mze1tf35s2bfTu7ndf758y55/x+c879OvcMYYnbxMTEy4IgOImIxkRkrYisNsasUrPe+wNE9C8ielRE9iVJsndmZubBpYRES6E8DMNXeu83ENHrAJwO4OUARvrY+i+ABwDcLSJ7jDF3RlF0f9H4CiNcrVZPCIJgk4hcCOCNBQH9EYBveO93NRqNx4rQuWjCExMT64IguEJE3kdEq4sA1alDRDTsb02SZOfMzMxDi7ExMGFr7THGGCciVwKYG5PL0HTMb69UKtNTU1Ozg9gbiLC1diMRXQ/gxEGMFtDnQRHZHMfxHQvVtWDCzrkdANSredvfRWQ3Ee0F8DCAJwDs994nQRCM6qxNROu892uI6A0ATs2rWER2xHF8VV55lctN2Dl3LICvA3hzDgMPENFXROT2SqVyb71efzZHnzkRnRNGRkY2isj5AM7K0e/HAN7OzP/MIZuP8OTk5FiSJDpjnpylVER+YIzZEUXRN/MY7ydTrVbXE9FlRPT+LFkiesh7f1Ycx4/009nXw9balxDRLwC8OEPZ/SLi4jjWCCi8WWtfA2CKiN6WofzxIAhePz09/dfMj5P1slqtPj8IgntEZF0vORH51Ozs7NU7d+5sFs60Q2EYhpeKyDUZq8LDInJ6HMdP98KS6WHn3E8BvKlHZx2X72Xmry410Xb91trTiOjLAF7Rw+5uZu6FufcYds7pl7wiTSkRPSUi5zHzr5eT7LytWq32gmaz+a0MZ1zDzB9LxZ72sFqtbjDGfLcHmWeI6IwoinTfe8RarVYzzWbzJxnb2A3M/P1OgF0hPT4+XhkdHd0H4LgUNv8xxpy5devW3x4xpm2Gt2zZMjoyMnJ363DSCemJ/fv3j3XOLV2EnXMNXQ57hPIFURTdVgay8xhaq4geKVem4Jph5mr788MIV6vVtcYY9W5XI6Iboij6SJnIzmNxzl0E4Itp2IIgWDs9Pf23+XeHEQ7D8EYR+VBKx8eYeU0ZybaR1s3OxhSMNzLzh7sIb968+YUrVqxQ7z6na6ATlS6UOzG2Qlv366bj3bMHDx4c27Zt25P6/JCHnXO6Cf90yhe6l5lfXWbvto3nm4no0hSHXRVFkR56/k/YWvsbItJ0zGFNRC6K4/hLQ0JYt8FdW0si2hNF0RmHCLcSbWnr6pPM/CIAMgyEFaNz7tsAzuvEmyTJKZotmQtpa+04EV2bQuo6Zh4fFrItwu8C8PmUSP1oHMfXzxEOw3CXiGzqFPLen9NoNL43TIQ19UREmmRY0YF7FzO/k5xzLwWgYdCZaZj13h/faDT+PUyEW15OO/T8MQiCjUr4HAC6Ee/MG/+MmfNkN0r3Pay124jo4x3ADuiBRwl/EMBNKTF/SxzHl5SOTQ5AzrnLANyQsjxdooRrmk1I0TPFzPUc+ksnYq09l4i+k8aJrLXbiajr7EhEV0ZRlDZzl45gJyDNhRljfpkCdLt6WF2vIdDZPsDMnys9uxSA1tpXEdHvU1599qgknHHqu/moDOlWNkTTyu2rTGKMOfeonLQ0lFunv08AOBPAXu/9jkajsafnsgTgVma+eBjHcBbmrI3HXcxc1D1vab5b1tbyQKVSOb5erz9TGrQFAMk8POhWLI7jOwuwUxoV/Y6Hn2Hmy0uDtgAgc4RbZQt/Ttl7PrVy5crj6vW6L8BWKVS057TuAqAX0p3t3cz8hVKgLQDEIcLW2suJ6LoUnX9i5tMKsFUKFYcIZ6VpAWxiZr2xG/p2WCI+4yDxeKVSWXM0jOXDCE9OTq5JkuTRNDcS0U1RFKWdqobK612XaWEYflJEru7BYuhDu4tw66ShxSFpd0laD7meme8ZKre2gU0teXDOnQ2gV3q2FBfig37wnjUevVI/auhIlzwMSnYOe1bnPkUtWrXznuUualkM2b6EtWzJGKMlBaf0MrScZUuLJduXsAq07l1/DuCEDIP3iUi4VIVpRRCd19G3Ek8FtfTQe//DrAI1lSu69LBIogsirMK1Wm11s9n8GoC35AByH4DbvPe3r1q16g8LKS7NoXtRIrk83G4ha/bugURL93cD+Mt8+TAR6YT3j0ql8rtBC70HZb1gwmooDMO3eu+vJaKTBjXc6rfPe39ho9H41SL15O4+EOFWiGv5n2sViz83t8VuwWW9pRyY8Dxu59zJIqJVAhcP+JPHI8y8bL8SLJrwPHH9jYeI3kFEF+Ssmp/rqjN7HMe6lV2WVhjhdrRhGJ7a+lFrPYDXAtB667Q/X5723p+tNwLLwrbf1rIIEBryxpgTkyQZA6DlFccS0fMA6G84d6RVvBZht5eO/wEB1Kvsoc6vtAAAAABJRU5ErkJggg==\") 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)}\n/*# sourceMappingURL=data:application/json;base64,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QUNYLHdCQUErQixDQUMvQix5Q0FDRixDQUNBLHdEQUNFLG1DQUNGLENBQ0Esd0RBQ0UsWUFDRixDQUNBLHFGQUNFLGFBQ0YsQ0FDQSxrREFDRSxpQkFBa0IsQ0FDbEIsUUFBUyxDQUNULFdBQVksQ0FDWixpQkFBa0IsQ0FDbEIsU0FBVSxDQUNWLDBDQUEyQyxDQUMzQyxxQ0FBMkMsQ0FDM0MsK0JBQW9DLENBQ3BDLGlCQUFrQixDQUNsQixZQUFhLENBQ2IsVUFBVyxDQUNYLGVBQ0YsQ0FDQSxtRkFDRSxrQkFBbUIsQ0FDbkIsU0FDRixDQUNBLDZDQUNFLGNBQWUsQ0FDZixpQkFBa0IsQ0FDbEIsUUFBUyxDQUNULFdBQVksQ0FDWixVQUFXLENBQ1gsZUFDRixDQUNBLGtEQUNFLGlCQUFrQixDQUNsQixNQUFPLENBQ1AsS0FBTSxDQUNOLFVBQVcsQ0FDWCxXQUFZLENBQ1osZ0JBQWlCLENBQ2pCLGlCQUFrQixDQUNsQixVQUFXLENBQ1gsY0FDRixDQUNBLG9EQUNFLGlCQUFrQixDQUNsQixRQUFTLENBQ1QsUUFBUyxDQUNULFVBQVcsQ0FDWCxXQUFZLENBQ1osa0JBQW1CLENBQ25CLGdCQUFpQixDQUNqQixlQUNGLENBQ0EsMkRBQ0UsWUFBYSxDQUNiLGVBQ0YsQ0FDQSwwREFDRSxVQUFXLENBQ1gsNkJBQ0YsQ0FDQSxxSEFDRSxVQUFXLENBQ1gsaUJBQWtCLENBQ2xCLGFBQWMsQ0FDZCxRQUFTLENBQ1QsU0FBVSxDQUNWLGdCQUFpQixDQUNqQixXQUNGLENBQ0Esa0VBQ0UsV0FDRixDQUNBLHdFQUNFLDZDQUNGLENBQ0EsaUVBQ0Usa0JBQ0YsQ0FDQSxzRUFDRSx3QkFDRiIsImZpbGUiOiJzdHlsZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyByb3RhdGlvbiB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuQGtleWZyYW1lcyBtYWdlbnRhUHVsc2Uge1xuICBmcm9tIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjMwMDMwO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDlweCAjMzMzO1xuICB9XG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2E5MDE0YjtcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxOHB4ICNhOTAxNGI7XG4gIH1cbiAgdG8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM2MzAwMzA7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgOXB4ICMzMzM7XG4gIH1cbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcG9zdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1wbGF5LWJpZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjQpO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1wbGF5LWJpZzphZnRlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2Fzc2V0cy9wbGF5LnBuZ1wiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1wbGF5LWJpZzpob3ZlcjphZnRlciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2Fzc2V0cy9wbGF5LWhvdmVyLnBuZ1wiKTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcmVjb3JkaW5nIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogMDtcbiAgcGFkZGluZzogMCAzcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiA5NXB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XG4gIG9wYWNpdHk6IDE7XG4gIGJvcmRlci1yYWRpdXM6IDBweCAwcHggOHB4IDhweDtcbiAgei1pbmRleDogMTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcmVjb3JkaW5nIC5qZXNzaWJ1Y2EtcmVjb3JkaW5nLXJlZC1wb2ludCB7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBiYWNrZ3JvdW5kOiAjRkYxRjFGO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogbWFnZW50YVB1bHNlIDFzIGxpbmVhciBpbmZpbml0ZTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcmVjb3JkaW5nIC5qZXNzaWJ1Y2EtcmVjb3JkaW5nLXRpbWUge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjREREREREO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1yZWNvcmRpbmcgLmplc3NpYnVjYS1pY29uLXJlY29yZFN0b3Age1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWxvYWRpbmcge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyMDtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtbG9hZGluZy10ZXh0IHtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICNmZmY7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWNvbnRyb2xzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE2MTYxNjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA0MDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgaGVpZ2h0OiAzOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1sZWZ0OiAxM3B4O1xuICBwYWRkaW5nLXJpZ2h0OiAxM3B4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWNvbnRyb2xzLWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwIDhweDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtY29udHJvbHMgLmplc3NpYnVjYS1jb250cm9scy1pdGVtOmhvdmVyIC5pY29uLXRpdGxlLXRpcHMge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLW1pY3JvcGhvbmUtY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWljb24tYXVkaW8ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLXBsYXkge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLXBhdXNlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtY29udHJvbHMgLmplc3NpYnVjYS1mdWxsc2NyZWVuLWV4aXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLXNjcmVlbnNob3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLXJlY29yZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWNvbnRyb2xzIC5qZXNzaWJ1Y2EtZnVsbHNjcmVlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWNvbnRyb2xzIC5qZXNzaWJ1Y2EtcmVjb3JkLXN0b3Age1xuICBkaXNwbGF5OiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWljb24tYXVkaW8sIC5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtY29udHJvbHMgLmplc3NpYnVjYS1pY29uLW11dGUge1xuICB6LWluZGV4OiAxO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWNvbnRyb2xzLWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWNvbnRyb2xzLWJvdHRvbSAuamVzc2lidWNhLWNvbnRyb2xzLWxlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1jb250cm9scyAuamVzc2lidWNhLWNvbnRyb2xzLWJvdHRvbSAuamVzc2lidWNhLWNvbnRyb2xzLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyLmplc3NpYnVjYS1jb250cm9scy1zaG93IC5qZXNzaWJ1Y2EtY29udHJvbHMge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIuamVzc2lidWNhLWNvbnRyb2xzLXNob3ctYXV0by1oaWRlIC5qZXNzaWJ1Y2EtY29udHJvbHMge1xuICBvcGFjaXR5OiAwLjg7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lci5qZXNzaWJ1Y2EtaGlkZS1jdXJzb3IgKiB7XG4gIGN1cnNvcjogbm9uZSAhaW1wb3J0YW50O1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLWxvYWRpbmcge1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvbG9hZGluZy5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG4gIGFuaW1hdGlvbjogcm90YXRpb24gMXMgbGluZWFyIGluZmluaXRlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLXNjcmVlbnNob3Qge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvc2NyZWVuc2hvdC5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWljb24tc2NyZWVuc2hvdDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHVybChcIi4uL2Fzc2V0cy9zY3JlZW5zaG90LWhvdmVyLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1wbGF5IHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL3BsYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLXBsYXk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvcGxheS1ob3Zlci5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWljb24tcGF1c2Uge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvcGF1c2UucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLXBhdXNlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL3BhdXNlLWhvdmVyLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1yZWNvcmQge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvcmVjb3JkLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1yZWNvcmQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvcmVjb3JkLWhvdmVyLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1yZWNvcmRTdG9wIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL3JlY29yZC1zdG9wLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1yZWNvcmRTdG9wOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL3JlY29yZC1zdG9wLWhvdmVyLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1mdWxsc2NyZWVuIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL2Z1bGxzY3JlZW4ucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLWZ1bGxzY3JlZW46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvZnVsbHNjcmVlbi1ob3Zlci5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWljb24tZnVsbHNjcmVlbkV4aXQge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9hc3NldHMvZXhpdC1mdWxsc2NyZWVuLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1mdWxsc2NyZWVuRXhpdDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHVybChcIi4uL2Fzc2V0cy9leGl0LWZ1bGxzY3JlZW4taG92ZXIucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLWF1ZGlvIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL2F1ZGlvLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1hdWRpbzpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHVybChcIi4uL2Fzc2V0cy9hdWRpby1ob3Zlci5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLWljb24tbXV0ZSB7XG4gIGJhY2tncm91bmQ6IHVybChcIi4uL2Fzc2V0cy9tdXRlLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtaWNvbi1tdXRlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vYXNzZXRzL211dGUtaG92ZXIucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1pY29uLXRleHQge1xuICBmb250LXNpemU6IDE0cHg7XG4gIHdpZHRoOiAzMHB4O1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1zcGVlZCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICNmZmY7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLXF1YWxpdHktbWVudS1saXN0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogMTAwJTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMzAwbXMsIG9wYWNpdHkgMzAwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1xdWFsaXR5LW1lbnUtbGlzdC5qZXNzaWJ1Y2EtcXVhbGl0eS1tZW51LXNob3duIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5pY29uLXRpdGxlLXRpcHMge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogMTAwJTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMzAwbXMgZWFzZSAwcywgb3BhY2l0eSAzMDBtcyBlYXNlIDBzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5pY29uLXRpdGxlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1xdWFsaXR5LW1lbnUge1xuICBwYWRkaW5nOiA4cHggMDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcXVhbGl0eS1tZW51LWl0ZW0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAyNXB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDUwcHg7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIDMwMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1xdWFsaXR5LW1lbnUtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2EtcXVhbGl0eS1tZW51LWl0ZW06Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS1xdWFsaXR5LW1lbnUtaXRlbS5qZXNzaWJ1Y2EtcXVhbGl0eS1tZW51LWl0ZW0tYWN0aXZlIHtcbiAgY29sb3I6ICMyMjk4RkM7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLXZvbHVtZS1wYW5lbC13cmFwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogMTAwJTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgyMiUpO1xuICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDMwMG1zLCBvcGFjaXR5IDMwMG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgaGVpZ2h0OiAxMjBweDtcbiAgd2lkdGg6IDUwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLXZvbHVtZS1wYW5lbC13cmFwLmplc3NpYnVjYS12b2x1bWUtcGFuZWwtd3JhcC1zaG93IHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2Etdm9sdW1lLXBhbmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMjFweDtcbiAgaGVpZ2h0OiA2MHB4O1xuICB3aWR0aDogNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2Etdm9sdW1lLXBhbmVsLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyIC5qZXNzaWJ1Y2Etdm9sdW1lLXBhbmVsLWhhbmRsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA0OHB4O1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAxMnB4O1xuICBoZWlnaHQ6IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAtNnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS12b2x1bWUtcGFuZWwtaGFuZGxlOjpiZWZvcmUge1xuICBib3R0b206IC01NHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS12b2x1bWUtcGFuZWwtaGFuZGxlOjphZnRlciB7XG4gIGJvdHRvbTogNnB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG4uamVzc2lidWNhLWNvbnRhaW5lciAuamVzc2lidWNhLXZvbHVtZS1wYW5lbC1oYW5kbGU6OmJlZm9yZSwgLmplc3NpYnVjYS1jb250YWluZXIgLmplc3NpYnVjYS12b2x1bWUtcGFuZWwtaGFuZGxlOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDNweDtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gIGhlaWdodDogNjBweDtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyLmplc3NpYnVjYS1mdWxsc2NyZWVuLXdlYiAuamVzc2lidWNhLWNvbnRyb2xzIHtcbiAgd2lkdGg6IDEwMHZoO1xufVxuLmplc3NpYnVjYS1jb250YWluZXIuamVzc2lidWNhLWZ1bGxzY3JlZW4td2ViIC5qZXNzaWJ1Y2EtcGxheS1iaWc6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMjcwZGVnKTtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyLmplc3NpYnVjYS1mdWxsc2NyZWVuLXdlYiAuamVzc2lidWNhLWxvYWRpbmcge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuLmplc3NpYnVjYS1jb250YWluZXIuamVzc2lidWNhLWZ1bGxzY3JlZW4td2ViIC5qZXNzaWJ1Y2EtbG9hZGluZy10ZXh0IHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbn0iXX0= */"; + var css_248z$1 = "@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;-webkit-user-select:none;user-select:none}.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)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jb250cm9sL3N0eWxlLmxlc3MiLCJzdHlsZS5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUNJLEdBQ0ksOEJDQ04sQ0RDRSxHQUNJLCtCQ0NOLENBQ0YsQ0RFQSx3QkFDSSxHQUNJLHdCQUFBLENBQ0EsK0JDQU4sQ0RFRSxJQUNJLHdCQUFBLENBQ0EsbUNDQU4sQ0RFRSxHQUNJLHdCQUFBLENBQ0EsK0JDQU4sQ0FDRixDRElBLHFDQWlCUSxjQUFBLENBQ0EsVUFBQSxDQUNBLFdDbEJSLENEREEsdUNBd0JRLGlCQUFBLENBQ0EsVUFBQSxDQUNBLE1BQUEsQ0FDQSxLQUFBLENBQ0EsT0FBQSxDQUNBLFFBQUEsQ0FDQSxXQUFBLENBQ0EsVUFBQSxDQUNBLHVCQUFBLENBQ0EsMkJBQUEsQ0FDQSx1QkFBQSxDQUNBLG1CQ3BCUixDRGZBLHlDQXVDUSxpQkFBQSxDQUNBLFlBQUEsQ0FDQSxXQUFBLENBQ0EsVUFBQSxDQUNBLHlCQ3JCUixDRHVCUSwrQ0FDSSxjQUFBLENBQ0EsVUFBQSxDQUNBLGlCQUFBLENBQ0EsUUFBQSxDQUNBLE9BQUEsQ0FDQSw4QkFBQSxDQUNBLGFBQUEsQ0FDQSxVQUFBLENBQ0EsV0FBQSxDQUNBLGs5QkFBQSxDQUNBLDJCQUFBLENBQ0EsdUJDckJaLENEeUJZLHFEQUNJLDB6QkN2QmhCLENEdkNBLDBDQW9FUSxZQUFBLENBQ0EsaUJBQUEsQ0FDQSxRQUFBLENBQ0EsS0FBQSxDQUNBLGFBQUEsQ0FDQSwwQkFBQSxDQUNBLDRCQUFBLENBQ0Esa0JBQUEsQ0FDQSxVQUFBLENBQ0EsV0FBQSxDQUNBLGVBQUEsQ0FDQSxTQUFBLENBQ0EseUJBQUEsQ0FDQSxTQzFCUixDRHZEQSx5RUFvRlksU0FBQSxDQUNBLFVBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EseUNDMUJaLENEOURBLG9FQTRGWSxjQUFBLENBQ0EsZUFBQSxDQUNBLFVDM0JaLENEbkVBLHFFQWtHWSxVQUFBLENBQ0EsV0FBQSxDQUNBLGNDNUJa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 */"; styleInject(css_248z$1); // todo: 待定 @@ -10939,7 +10955,7 @@ } - var css_248z = ".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQ0UsaUJBQWtCLENBQ2xCLGFBQWMsQ0FDZCxVQUFXLENBQ1gsV0FBWSxDQUNaLGVBQ0YsQ0FDQSw4Q0FDRSxjQUFlLENBQ2YsWUFBYSxDQUNiLE1BQU8sQ0FDUCxLQUFNLENBQ04sT0FBUSxDQUNSLFFBQVMsQ0FDVCxxQkFBdUIsQ0FDdkIsc0JBQXdCLENBQ3hCLGVBQ0YiLCJmaWxlIjoic3R5bGUuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5qZXNzaWJ1Y2EtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5qZXNzaWJ1Y2EtY29udGFpbmVyLmplc3NpYnVjYS1mdWxsc2NyZWVuLXdlYiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwdncgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiAjMDAwO1xufSJdfQ== */"; + var css_248z = ".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wbGF5ZXIvc3R5bGUubGVzcyIsInN0eWxlLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQ0ksaUJBQUEsQ0FDQSxhQUFBLENBQ0EsVUFBQSxDQUNBLFdBQUEsQ0FDQSxlQ0NKLENEQ0ksOENBQ0ksY0FBQSxDQUNBLFlBQUEsQ0FDQSxNQUFBLENBQ0EsS0FBQSxDQUNBLE9BQUEsQ0FDQSxRQUFBLENBQ0EscUJBQUEsQ0FDQSxzQkFBQSxDQUNBLGVDQ1IiLCJmaWxlIjoic3R5bGUubGVzcyJ9 */"; styleInject(css_248z); var observer = (player => { @@ -11913,14 +11929,16 @@ this._opt.controlAutoHide = false; } - if (screenfull.isEnabled && this._opt.useWebFullScreen) { - this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false'); - this._opt.useWebFullScreen = false; - } + if (this._opt.autoUseSystemFullScreen) { + if (screenfull.isEnabled && this._opt.useWebFullScreen) { + this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false'); + this._opt.useWebFullScreen = false; + } - if (isFalse(screenfull.isEnabled) && isFalse(this._opt.useWebFullScreen)) { - this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true'); - this._opt.useWebFullScreen = true; + if (isFalse(screenfull.isEnabled) && isFalse(this._opt.useWebFullScreen)) { + this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true'); + this._opt.useWebFullScreen = true; + } } // @@ -13162,7 +13180,7 @@ const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket; // - const demuxType = isHttp || url.indexOf(".flv") !== -1 || this._opt.isFlv ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s; + const demuxType = isHttp || url.indexOf(".flv") !== -1 || this.player._opt.isFlv ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s; this.player.updateOption({ protocol, demuxType @@ -13184,6 +13202,13 @@ }); }); }); + this.player.once(EVENTS_ERROR.webglContextLostError, () => { + this.pause().then(() => { + this.debug.log('Jessibuca', 'webglContextLostError and paused'); + }).catch(() => { + this.debug.warn('Jessibuca', 'webglContextLostError and paused error'); + }); + }); this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => { this.pause().then(() => { if (this.player._opt.autoWasm) { @@ -13519,7 +13544,7 @@ deg = parseInt(deg, 10); const list = [0, 90, 180, 270]; - if (this._opt.rotate === deg || list.indexOf(deg) === -1) { + if (this.player._opt.rotate === deg || list.indexOf(deg) === -1) { return; } diff --git a/demo/public/jessibuca.js.map b/demo/public/jessibuca.js.map index 1c0428ef..8af4c301 100644 --- a/demo/public/jessibuca.js.map +++ b/demo/public/jessibuca.js.map @@ -1 +1 @@ -{"version":3,"file":"jessibuca.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/constant/index.js","../../src/utils/debug.js","../../src/utils/events.js","../../src/player/property.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/player/events.js","../../src/utils/emitter.js","../../src/utils/webgl.js","../../src/video/commonLoader.js","../../src/utils/file-save.js","../../src/video/canvasLoader.js","../../src/video/videoLoader.js","../../src/video/index.js","../../src/audio/audioContextLoader.js","../../src/audio/index.js","../../src/stream/fetchLoader.js","../../src/stream/websocketLoader.js","../../src/stream/index.js","../../node_modules/recordrtc/RecordRTC.js","../../src/recorder/recordRTCLoader.js","../../src/recorder/index.js","../../src/worker/index.js","../../src/demux/commonLoader.js","../../src/demux/flvLoader.js","../../src/demux/m7sLoader.js","../../src/demux/index.js","../../src/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/decoder/webcodecs.js","../../src/control/icons.js","../../src/control/template.js","../../src/control/observer.js","../../src/control/property.js","../../src/control/events.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/control/hotkey.js","../../src/control/index.js","../../src/player/observer.js","../../src/remux/fmp4-generator.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: false,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n loadingDecoderWorkerTimeout: 10 //\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 volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError: 'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.log(`Jb: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.warn(`Jb: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jb: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\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 isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n const stringList = [\n EVENTS.stats,\n EVENTS.playToRenderTimes,\n EVENTS.audioInfo,\n EVENTS.videoInfo\n ]\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n if (stringList.includes(key)) {\n value = JSON.stringify(value)\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n this.videoInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n async destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n if(this.contextGl){\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n }\n else {\n this.player.debug.error(`CanvasVideoLoader`, 'init webgl fail');\n }\n }\n\n _initContext2D() {\n this.context2D = this.$videoElement.getContext('2d');\n }\n\n\n // 渲染类型\n _initCanvasRender() {\n if (this.player._opt.useWCS && !this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.webcodecs;\n this._initContext2D();\n } else if (this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.offscreen;\n this._bindOffscreen();\n } else {\n this.renderType = CANVAS_RENDER_TYPE.webgl;\n this._initContextGl();\n }\n }\n\n _supportOffscreen() {\n return supportOffscreen(this.$videoElement) && this.player._opt.useOffscreen;\n }\n\n //\n _bindOffscreen() {\n this.bitmaprenderer = this.$videoElement.getContext('bitmaprenderer');\n }\n\n initCanvasViewSize() {\n this.$videoElement.width = this.videoInfo.width;\n this.$videoElement.height = this.videoInfo.height;\n this.resize();\n }\n\n //\n render(msg) {\n this.player.videoTimestamp = msg.ts;\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n this.bitmaprenderer.transferFromImageBitmap(msg.buffer);\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isAndroid, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.disablePictureInPicture = true;\n if (isAndroid()) {\n // default no poster\n $videoElement.poster = 'noposter';\n }\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', `canplay`);\n if (this._delayPlay) {\n this.player.debug.log('Video', `canplay and _delayPlay is true and next play()`);\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n // this.player.emit(EVENTS.videoWaiting);\n this.player.debug.log('Video', 'waiting');\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying() && this.init) {\n this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`);\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n async destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n await this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n // release memory\n msg.videoFrame.close();\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 (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE ||\n (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 this._prevVolume = null;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n async destroy() {\n this.closeAudio();\n this.resetInit();\n if (this.audioContext) {\n await this.audioContext.close();\n this.audioContext = null;\n }\n\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this._prevVolume = null;\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 this.audioInfo.encTypeCode = 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;\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n // if (!this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0);\n this.clear();\n } else {\n // if (this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0.5);\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 if (this._prevVolume === null) {\n this.player.emit(EVENTS.mute, volume === 0);\n } else {\n if (this._prevVolume === 0 && volume > 0) {\n this.player.emit(EVENTS.mute, false);\n } else if (this._prevVolume > 0 && volume === 0) {\n this.player.emit(EVENTS.mute, true);\n }\n }\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 this.player.emit(EVENTS.volume, this.player.volume); // outer\n // save last volume\n this._prevVolume = 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 getLastVolume() {\n return this._prevVolume;\n }\n}\n","import AudioContextLoader from \"./audioContextLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n async destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player.debug.log('FetchStream', 'fetchStream', url, JSON.stringify(options));\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n async destroy() {\n if (this.socket) {\n this.socket.close(1000, 'Client disconnecting');\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n async destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emitError(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {FRAME_HEADER_EX, FRAME_TYPE_EX, MEDIA_TYPE, PACKET_TYPE_EX} from \"../constant\";\nimport {hevcEncoderNalePacketNotLength} from \"../utils\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n\n if (this.player._opt.useMSE &&\n this.player.mseDecoder &&\n this.player.mseDecoder.getSourceBufferUpdating()) {\n this.player.debug.warn('CommonDemux', `_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);\n return;\n }\n\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n _decodeEnhancedH265Video(payload, ts) {\n const flags = payload[0];\n const frameTypeEx = flags & 0x30;\n const packetEx = flags & 0x0F;\n const codecId = payload.slice(1, 5);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n const isAV1 = String.fromCharCode(codecId[0]) == 'a';\n if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_SEQ_START) {\n if (frameTypeEx === FRAME_TYPE_EX.FT_KEY) {\n // header video info\n const extraData = payload.slice(5);\n if (!isAV1) {\n const payloadBuffer = new Uint8Array(5 + extraData.length);\n payloadBuffer.set([0x1c, 0x00, 0x00, 0x00, 0x00], 0);\n payloadBuffer.set(extraData, 5);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, 0, true, 0);\n }\n }\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMES) {\n let payloadBuffer = payload;\n let cts = 0;\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n\n if (!isAV1) {\n // h265\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n cts = tmp32[0];\n const data = payload.slice(8);\n payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMESX) {\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n const data = payload.slice(5);\n let payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, 0);\n }\n }\n\n\n _isEnhancedH265Header(flags) {\n return (flags & FRAME_HEADER_EX) === FRAME_HEADER_EX;\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 flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\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\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, type, ts, isIframe, cts);\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.player.debug.log('Webcodecs', 'VideoDecoder configure', config)\n try {\n this.decoder.configure(config);\n }\n catch (e){\n this.player.debug.error('Webcodecs', 'VideoDecoder configure', e);\n this.player.emit(EVENTS_ERROR.webcodecsConfigureError);\n return;\n }\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n if (this.isDecodeStateClosed()) {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeStateClosed true');\n return;\n }\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n else if (e.toString().indexOf(WCS_ERROR.canNotDecodeClosedCodec) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n\n isDecodeStateClosed() {\n return this.decoder.state === 'closed';\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `
` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n if(!player.recording && control.$recordingTime){\n control.$recordingTime.innerHTML = formatTimeTips(0);\n }\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.scss'\nimport hotkey from \"./hotkey\";\nimport {getStyle, isBoolean, removeElement, setStyle} from \"../utils\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n const result = removeElement(this.$poster);\n if(!result){\n const $poster = this.player.$container.querySelector('.jessibuca-poster');\n if ($poster && this.player.$container) {\n this.player.$container.removeChild($poster);\n }\n }\n }\n if (this.$loading) {\n const result = removeElement(this.$loading)\n if (!result) {\n const $loading = this.player.$container.querySelector('.jessibuca-loading');\n if ($loading && this.player.$container) {\n this.player.$container.removeChild($loading);\n }\n }\n }\n if (this.$controls) {\n const result = removeElement(this.$controls)\n if (!result) {\n const $controls = this.player.$container.querySelector('.jessibuca-controls');\n if ($controls && this.player.$container) {\n this.player.$container.removeChild($controls);\n }\n }\n }\n\n if (this.$recording) {\n const result = removeElement(this.$recording)\n if (!result) {\n const $recording = this.player.$container.querySelector('.jessibuca-recording');\n if ($recording && this.player.$container) {\n this.player.$container.removeChild($recording);\n }\n }\n }\n\n if (this.$playBig) {\n const result = removeElement(this.$playBig)\n if (!result) {\n const $playBig = this.player.$container.querySelector('.jessibuca-play-big');\n if ($playBig && this.player.$container) {\n this.player.$container.removeChild($playBig);\n }\n }\n }\n\n if(this.player.$container){\n this.player.$container.classList.remove('jessibuca-controls-show-auto-hide');\n this.player.$container.classList.remove('jessibuca-controls-show');\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 toggleBar(flag) {\n if (this.$controls) {\n if (!isBoolean(flag)) {\n // flag = this.$controls.style.display === 'none';\n flag = getStyle(this.$controls, 'display', false) === 'none';\n }\n\n if (flag) {\n setStyle(this.$controls, 'display', 'flex');\n } else {\n setStyle(this.$controls, 'display', 'none');\n }\n }\n }\n\n getBarIsShow() {\n let result = false;\n if (this.$controls) {\n result = getStyle(this.$controls, 'display', false) !== 'none';\n }\n return result;\n }\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n debug.error('MediaSource', 'sourceBuffer error', error);\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n getSourceBufferUpdating() {\n return this.sourceBuffer && this.sourceBuffer.updating;\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, VERSION} 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, isFalse,\n isFullScreen, isMobile, isPad,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.scss'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\nimport screenfull from \"screenfull\";\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 this.debug.log('Player', 'init');\n\n // disable offscreen\n this._opt.forceNoOffscreen = true;\n\n if (isMobile() || isPad()) {\n this.debug.log('Player', 'isMobile and set _opt.controlAutoHide false');\n this._opt.controlAutoHide = false;\n }\n\n if (screenfull.isEnabled &&\n this._opt.useWebFullScreen) {\n this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false');\n this._opt.useWebFullScreen = false;\n }\n\n if (isFalse(screenfull.isEnabled) &&\n isFalse(this._opt.useWebFullScreen)) {\n this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true');\n this._opt.useWebFullScreen = true;\n }\n\n\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n this.debug.log('Player', 'init and version is', VERSION);\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 try {\n this.debug.log('Player options', JSON.stringify(this._opt));\n } catch (e) {\n // ignore\n }\n }\n\n\n async destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n await 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 await this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n this.debug.log('Player', 'waiting decoderWorker init');\n this.once(EVENTS.decoderWorkerInit, () => {\n this.debug.log('Player', 'decoderWorker init success');\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emitError(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emitError(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.fetchError, error);\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.websocketError, error);\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, (msg) => {\n // reject();\n this.emitError(EVENTS.streamEnd, msg);\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n if (this.audio) {\n const prev = this.audio.getLastVolume();\n this.audio.mute(flag)\n if (flag) {\n this._lastVolume = 0;\n } else {\n this._lastVolume = prev || 0.5;\n }\n }\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n\n emitError(errorType, message = '') {\n this.emit(EVENTS.error, errorType, message);\n this.emit(errorType, message);\n }\n\n isControlBarShow() {\n const hasControl = this._opt.hasControl;\n const controlAutoHide = this._opt.controlAutoHide;\n\n let result = hasControl && !controlAutoHide;\n\n if (result) {\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n }\n\n return result;\n }\n\n getControlBarShow() {\n let result = false;\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n return result;\n }\n\n toggleControlBar(isShow) {\n if (this.control) {\n this.control.toggleBar(isShow);\n this.resize();\n }\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {\n CONTAINER_DATA_SET_KEY,\n DEMUX_TYPE,\n EVENTS,\n EVENTS_ERROR,\n JESSIBUCA_EVENTS,\n PLAYER_PLAY_PROTOCOL,\n SCALE_MODE_TYPE,\n VERSION\n} from \"./constant\";\nimport {\n getElementDataset,\n isEmpty,\n isMobile,\n isNotEmpty,\n removeElementDataset,\n setElementDataset,\n supportWCS,\n uuid16\n} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\nimport Debug from \"./utils/debug\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n if (this._checkHasCreated($container)) {\n throw new Error(`Jessibuca container has been created and can not be created again`, $container);\n return;\n }\n\n // videoBuffer set too long\n if (_opt.videoBuffer > 10) {\n console.warn('Jessibuca', `videoBuffer ${_opt.videoBuffer}s is too long, will black screen for ${_opt.videoBuffer}s , it is recommended to set it to less than 10s`);\n }\n\n if (!$container.classList) {\n throw new Error('Jessibuca container option must be DOM Element');\n return;\n }\n\n $container.classList.add('jessibuca-container');\n setElementDataset($container, CONTAINER_DATA_SET_KEY, uuid16());\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.initDecoderWorkerTimeout = null;\n this._destroyed = false;\n this.events = new Events(this);\n this.debug = new Debug(this);\n this._initPlayer($container, _opt);\n console.log(`Jessibuca version: ${VERSION}`);\n }\n\n /**\n *\n */\n async destroy() {\n this._destroyed = true;\n this.off();\n this._clearInitDecoderWorkerTimeout();\n if (this.player) {\n await this.player.destroy();\n this.player = null;\n }\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.$container) {\n this.$container.classList.remove('jessibuca-container');\n this.$container.classList.remove('jessibuca-fullscreen-web');\n removeElementDataset(this.$container, CONTAINER_DATA_SET_KEY);\n this.$container = null;\n }\n this._opt = {};\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n try {\n this.debug.log('jessibuca', '_initPlayer', JSON.stringify(this.player.getOption()))\n } catch (e) {\n // ignore\n }\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否销毁\n * @returns {boolean}\n */\n isDestroyed() {\n return this._destroyed;\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return new Promise((resolve, reject) => {\n if (this.player) {\n this.player.pause().then(() => {\n resolve();\n }).catch((e) => {\n reject(e)\n });\n } else {\n reject('player is null')\n }\n })\n }\n\n /**\n *\n */\n async close() {\n await this.destroy();\n return true;\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (this.isDestroyed()) {\n reject('Jessibuca is destroyed')\n return;\n }\n\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false, useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'media source h265 not support and paused');\n }\n });\n })\n\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'mse source buffer error and paused');\n }\n })\n })\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false, useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs h265 not support and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs decode error and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsConfigureError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Configure error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs Configure error and paused');\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch((e) => {\n // reject();\n this.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n } else {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and paused');\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'wasm decode error and paused error', e)\n })\n }\n })\n // fetch error\n this.player.once(EVENTS_ERROR.fetchError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'fetch error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'fetch error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.websocketError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'websocket Error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'websocket Error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS.streamEnd, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'stream End and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'stream End and pause play error', e)\n })\n })\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay &&\n (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay &&\n (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.debug.log('Jessibuca', '_play ant waiting decoderWorkerInit');\n this._checkInitDecoderWorkerTimeout();\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this._clearInitDecoderWorkerTimeout();\n if (this.isDestroyed()) {\n return;\n }\n this.debug.log('Jessibuca', '_play decoderWorkerInit success and play');\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n _checkHasCreated(element) {\n if (!element) return false;\n const gbProV = getElementDataset(element, CONTAINER_DATA_SET_KEY);\n if (gbProV) {\n return true;\n }\n return false;\n }\n\n\n toggleControlBar(isShow) {\n if (this.isDestroyed()) {\n return;\n }\n\n if (this.player) {\n this.player.toggleControlBar(isShow);\n }\n }\n\n getControlBarShow() {\n if (this.isDestroyed()) {\n return false;\n }\n let result = false;\n if (this.player) {\n result = this.player.getControlBarShow();\n }\n return result;\n }\n\n _clearInitDecoderWorkerTimeout() {\n if (this.initDecoderWorkerTimeout) {\n clearTimeout(this.initDecoderWorkerTimeout);\n this.initDecoderWorkerTimeout = null;\n }\n }\n\n _checkInitDecoderWorkerTimeout() {\n this._clearInitDecoderWorkerTimeout();\n this.initDecoderWorkerTimeout = setTimeout(() => {\n this._handleInitDecoderWorkerTimeout();\n }, this.player._opt.loadingDecoderWorkerTimeout * 1000);\n }\n\n\n _handleInitDecoderWorkerTimeout() {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'init decoder worker timeout and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'init decoder worker timeout and pause play error', e)\n })\n }\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","CONTAINER_DATA_SET_KEY","VERSION","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","loadingDecoderWorkerTimeout","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","volume","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsConfigureError","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","canNotDecodeClosedCodec","FETCH_ERROR","abortError1","abortError2","abort","FRAME_HEADER_EX","PACKET_TYPE_EX","PACKET_TYPE_SEQ_START","PACKET_TYPE_FRAMES","PACKET_TYPE_FRAMESX","FRAME_TYPE_EX","FT_KEY","FT_INTER","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","isPad","isAndroid","UA","supportWCS","uuid16","c","r","random","v","toString","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","removeElement","parentNode","removeChild","hevcEncoderNalePacketNotLength","oneNALBuffer","isIframe","idrBit","nIdrBit","tmp","arrayBuffer","byteLength","set","isFalse","getElementDataset","dataset","getAttribute","setElementDataset","setAttribute","removeElementDataset","removeAttribute","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","stringList","includes","JSON","stringify","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","isControlBarShow","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","disablePictureInPicture","poster","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","_prevVolume","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","isStateSuspended","getLastVolume","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","emitError","decodeVideo","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","mseDecoder","getSourceBufferUpdating","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","_decodeEnhancedH265Video","flags","frameTypeEx","packetEx","codecId","ArrayBuffer","tmp32","Uint32Array","isAV1","extraData","payloadBuffer","_isEnhancedH265Header","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp8","t","abps","vbps","need","next","combine","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","isDecodeStateClosed","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","toggleBar","getBarIsShow","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","checkStatsInterval","_close","prev","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","errorType","getControlBarShow","toggleControlBar","isShow","Jessibuca","Error","_checkHasCreated","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","initDecoderWorkerTimeout","_destroyed","_initPlayer","_clearInitDecoderWorkerTimeout","_bindEvents","_resetPlayer","isDestroyed","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","_checkInitDecoderWorkerTimeout","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen","gbProV","_handleInitDecoderWorkerTimeout"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jessibuca.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/constant/index.js","../../src/utils/debug.js","../../src/utils/events.js","../../src/player/property.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/player/events.js","../../src/utils/emitter.js","../../src/utils/webgl.js","../../src/video/commonLoader.js","../../src/utils/file-save.js","../../src/video/canvasLoader.js","../../src/video/videoLoader.js","../../src/video/index.js","../../src/audio/audioContextLoader.js","../../src/audio/index.js","../../src/stream/fetchLoader.js","../../src/stream/websocketLoader.js","../../src/stream/index.js","../../node_modules/recordrtc/RecordRTC.js","../../src/recorder/recordRTCLoader.js","../../src/recorder/index.js","../../src/worker/index.js","../../src/demux/commonLoader.js","../../src/demux/flvLoader.js","../../src/demux/m7sLoader.js","../../src/demux/index.js","../../src/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/decoder/webcodecs.js","../../src/control/icons.js","../../src/control/template.js","../../src/control/observer.js","../../src/control/property.js","../../src/control/events.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/control/hotkey.js","../../src/control/index.js","../../src/player/observer.js","../../src/remux/fmp4-generator.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\nexport const CONTAINER_DATA_SET_KEY = 'jessibuca'\n\nexport const VERSION = '__VERSION__'\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: false,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n loadingDecoderWorkerTimeout: 10, //\n autoUseSystemFullScreen: true, // auto system full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n volume: 'volume',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n volumechange: EVENTS.volumechange,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes,\n volume: EVENTS.volume\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsConfigureError: 'webcodecsConfigureError',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError',\n webglContextLostError: 'webglContextLostError',\n\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()',\n canNotDecodeClosedCodec: \"Cannot call 'decode' on a closed codec\"\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n\nexport const FRAME_HEADER_EX = 0x80\n\n\nexport const PACKET_TYPE_EX = {\n PACKET_TYPE_SEQ_START: 0,\n PACKET_TYPE_FRAMES: 1,\n PACKET_TYPE_FRAMESX: 3,\n};\n\n\nexport const FRAME_TYPE_EX = {\n FT_KEY: 0x10,\n FT_INTER: 0x20\n};\n\n\n\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.log(`Jb: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt && master._opt.debug) {\n console.warn(`Jb: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jb: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\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 isPad(){\n return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n\n\nexport function removeElement(element) {\n let result = false;\n if (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n result = true;\n }\n }\n return result;\n}\n\nexport function hevcEncoderNalePacketNotLength(oneNALBuffer, isIframe) {\n const idrBit = 0x10 | 12;\n const nIdrBit = 0x20 | 12;\n let tmp = [];\n if (isIframe) {\n tmp[0] = idrBit;\n } else {\n tmp[0] = nIdrBit;\n }\n tmp[1] = 1;\n //\n tmp[2] = 0;\n tmp[3] = 0;\n tmp[4] = 0;\n\n const arrayBuffer = new Uint8Array(tmp.length + oneNALBuffer.byteLength);\n arrayBuffer.set(tmp, 0);\n arrayBuffer.set(oneNALBuffer, tmp.length);\n return arrayBuffer;\n}\n\n\nexport function isTrue(value) {\n return value === true || value === 'true';\n}\n\nexport function isFalse(value) {\n return value !== true && value !== 'true';\n}\n\nexport function getElementDataset(element, key) {\n if (!element) {\n return '';\n }\n\n if (element.dataset) {\n return element.dataset[key];\n }\n return element.getAttribute('data-' + key);\n}\n\nexport function setElementDataset(element, key, value) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n element.dataset[key] = value;\n } else {\n element.setAttribute('data-' + key, value);\n }\n}\n\nexport function removeElementDataset(element, key) {\n if (!element) {\n return;\n }\n\n if (element.dataset) {\n delete element.dataset[key];\n } else {\n element.removeAttribute('data-' + key);\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n const stringList = [\n EVENTS.stats,\n EVENTS.playToRenderTimes,\n EVENTS.audioInfo,\n EVENTS.videoInfo\n ]\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n if (stringList.includes(key)) {\n value = JSON.stringify(value)\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n this.videoInfo.encTypeCode = data.encTypeCode;\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, EVENTS_ERROR, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.isContextGlRenderLost = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n async destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n this.isContextGlRenderLost = false;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n if (this.contextGl) {\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n } else {\n this.player.debug.error(`CanvasVideoLoader`, 'init webgl fail');\n }\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 if (this.isContextGlRenderLost) {\n return;\n }\n try {\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n } catch (e) {\n this.player.debug.error('CanvasVideoLoader', 'render', e);\n this.isContextGlRenderLost = true;\n this.player.emitError(EVENTS_ERROR.webglContextLostError)\n }\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isAndroid, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.disablePictureInPicture = true;\n if (isAndroid()) {\n // default no poster\n $videoElement.poster = 'noposter';\n }\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', `canplay`);\n if (this._delayPlay) {\n this.player.debug.log('Video', `canplay and _delayPlay is true and next play()`);\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n // this.player.emit(EVENTS.videoWaiting);\n this.player.debug.log('Video', 'waiting');\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying() && this.init) {\n this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`);\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n async destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n await this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n // release memory\n msg.videoFrame.close();\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 (this.player.isControlBarShow()) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE ||\n (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 this._prevVolume = null;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n async destroy() {\n this.closeAudio();\n this.resetInit();\n if (this.audioContext) {\n await this.audioContext.close();\n this.audioContext = null;\n }\n\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this._prevVolume = null;\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 this.audioInfo.encTypeCode = 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;\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n // if (!this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0);\n this.clear();\n } else {\n // if (this.isMute) {\n // this.player.emit(EVENTS.mute, flag);\n // }\n this.setVolume(0.5);\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 if (this._prevVolume === null) {\n this.player.emit(EVENTS.mute, volume === 0);\n } else {\n if (this._prevVolume === 0 && volume > 0) {\n this.player.emit(EVENTS.mute, false);\n } else if (this._prevVolume > 0 && volume === 0) {\n this.player.emit(EVENTS.mute, true);\n }\n }\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 this.player.emit(EVENTS.volume, this.player.volume); // outer\n // save last volume\n this._prevVolume = 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 getLastVolume() {\n return this._prevVolume;\n }\n}\n","import AudioContextLoader from \"./audioContextLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n async destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player.debug.log('FetchStream', 'fetchStream', url, JSON.stringify(options));\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n async destroy() {\n if (this.socket) {\n this.socket.close(1000, 'Client disconnecting');\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n async destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emitError(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {FRAME_HEADER_EX, FRAME_TYPE_EX, MEDIA_TYPE, PACKET_TYPE_EX} from \"../constant\";\nimport {hevcEncoderNalePacketNotLength} from \"../utils\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n\n if (this.player._opt.useMSE &&\n this.player.mseDecoder &&\n this.player.mseDecoder.getSourceBufferUpdating()) {\n this.player.debug.warn('CommonDemux', `_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);\n return;\n }\n\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n _decodeEnhancedH265Video(payload, ts) {\n const flags = payload[0];\n const frameTypeEx = flags & 0x30;\n const packetEx = flags & 0x0F;\n const codecId = payload.slice(1, 5);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\n const isAV1 = String.fromCharCode(codecId[0]) == 'a';\n if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_SEQ_START) {\n if (frameTypeEx === FRAME_TYPE_EX.FT_KEY) {\n // header video info\n const extraData = payload.slice(5);\n if (!isAV1) {\n const payloadBuffer = new Uint8Array(5 + extraData.length);\n payloadBuffer.set([0x1c, 0x00, 0x00, 0x00, 0x00], 0);\n payloadBuffer.set(extraData, 5);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, 0, true, 0);\n }\n }\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMES) {\n let payloadBuffer = payload;\n let cts = 0;\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n\n if (!isAV1) {\n // h265\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n cts = tmp32[0];\n const data = payload.slice(8);\n payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n\n } else if (packetEx === PACKET_TYPE_EX.PACKET_TYPE_FRAMESX) {\n const isIFrame = frameTypeEx === FRAME_TYPE_EX.FT_KEY;\n const data = payload.slice(5);\n let payloadBuffer = hevcEncoderNalePacketNotLength(data, isIFrame);\n this._doDecode(payloadBuffer, MEDIA_TYPE.video, ts, isIFrame, 0);\n }\n }\n\n\n _isEnhancedH265Header(flags) {\n return (flags & FRAME_HEADER_EX) === FRAME_HEADER_EX;\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 flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n const tmp = new ArrayBuffer(4);\n const tmp32 = new Uint32Array(tmp);\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\n const flags = payload[0];\n if (this._isEnhancedH265Header(flags)) {\n this._decodeEnhancedH265Video(payload, ts);\n } else {\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n this._doDecode(payload, type, ts, isIframe, cts);\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.player.debug.log('Webcodecs', 'VideoDecoder configure', config)\n try {\n this.decoder.configure(config);\n }\n catch (e){\n this.player.debug.error('Webcodecs', 'VideoDecoder configure', e);\n this.player.emit(EVENTS_ERROR.webcodecsConfigureError);\n return;\n }\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n if (this.isDecodeStateClosed()) {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeStateClosed true');\n return;\n }\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n else if (e.toString().indexOf(WCS_ERROR.canNotDecodeClosedCodec) !== -1) {\n this.player.emitError(EVENTS_ERROR.webcodecsDecodeError);\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n\n isDecodeStateClosed() {\n return this.decoder.state === 'closed';\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `
` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n if(!player.recording && control.$recordingTime){\n control.$recordingTime.innerHTML = formatTimeTips(0);\n }\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.less'\nimport hotkey from \"./hotkey\";\nimport {getStyle, isBoolean, removeElement, setStyle} from \"../utils\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n const result = removeElement(this.$poster);\n if(!result){\n const $poster = this.player.$container.querySelector('.jessibuca-poster');\n if ($poster && this.player.$container) {\n this.player.$container.removeChild($poster);\n }\n }\n }\n if (this.$loading) {\n const result = removeElement(this.$loading)\n if (!result) {\n const $loading = this.player.$container.querySelector('.jessibuca-loading');\n if ($loading && this.player.$container) {\n this.player.$container.removeChild($loading);\n }\n }\n }\n if (this.$controls) {\n const result = removeElement(this.$controls)\n if (!result) {\n const $controls = this.player.$container.querySelector('.jessibuca-controls');\n if ($controls && this.player.$container) {\n this.player.$container.removeChild($controls);\n }\n }\n }\n\n if (this.$recording) {\n const result = removeElement(this.$recording)\n if (!result) {\n const $recording = this.player.$container.querySelector('.jessibuca-recording');\n if ($recording && this.player.$container) {\n this.player.$container.removeChild($recording);\n }\n }\n }\n\n if (this.$playBig) {\n const result = removeElement(this.$playBig)\n if (!result) {\n const $playBig = this.player.$container.querySelector('.jessibuca-play-big');\n if ($playBig && this.player.$container) {\n this.player.$container.removeChild($playBig);\n }\n }\n }\n\n if(this.player.$container){\n this.player.$container.classList.remove('jessibuca-controls-show-auto-hide');\n this.player.$container.classList.remove('jessibuca-controls-show');\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 toggleBar(flag) {\n if (this.$controls) {\n if (!isBoolean(flag)) {\n // flag = this.$controls.style.display === 'none';\n flag = getStyle(this.$controls, 'display', false) === 'none';\n }\n\n if (flag) {\n setStyle(this.$controls, 'display', 'flex');\n } else {\n setStyle(this.$controls, 'display', 'none');\n }\n }\n }\n\n getBarIsShow() {\n let result = false;\n if (this.$controls) {\n result = getStyle(this.$controls, 'display', false) !== 'none';\n }\n return result;\n }\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n debug.error('MediaSource', 'sourceBuffer error', error);\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emitError(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n getSourceBufferUpdating() {\n return this.sourceBuffer && this.sourceBuffer.updating;\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, VERSION} 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, isFalse,\n isFullScreen, isMobile, isPad,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.less'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\nimport screenfull from \"screenfull\";\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 this.debug.log('Player', 'init');\n\n // disable offscreen\n this._opt.forceNoOffscreen = true;\n\n if (isMobile() || isPad()) {\n this.debug.log('Player', 'isMobile and set _opt.controlAutoHide false');\n this._opt.controlAutoHide = false;\n }\n\n if (this._opt.autoUseSystemFullScreen) {\n if (screenfull.isEnabled &&\n this._opt.useWebFullScreen) {\n this.debug.log('Player', 'screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false');\n this._opt.useWebFullScreen = false;\n }\n\n if (isFalse(screenfull.isEnabled) &&\n isFalse(this._opt.useWebFullScreen)) {\n this.debug.log('Player', 'screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true');\n this._opt.useWebFullScreen = true;\n }\n }\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n this.debug.log('Player', 'init and version is', VERSION);\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 try {\n this.debug.log('Player options', JSON.stringify(this._opt));\n } catch (e) {\n // ignore\n }\n }\n\n\n async destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n await 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 await this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n this.debug.log('Player', 'waiting decoderWorker init');\n this.once(EVENTS.decoderWorkerInit, () => {\n this.debug.log('Player', 'decoderWorker init success');\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emitError(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emitError(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emitError(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.fetchError, error);\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n // reject(error)\n this.emitError(EVENTS_ERROR.websocketError, error);\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, (msg) => {\n // reject();\n this.emitError(EVENTS.streamEnd, msg);\n })\n\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n if (this.audio) {\n const prev = this.audio.getLastVolume();\n this.audio.mute(flag)\n if (flag) {\n this._lastVolume = 0;\n } else {\n this._lastVolume = prev || 0.5;\n }\n }\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n\n emitError(errorType, message = '') {\n this.emit(EVENTS.error, errorType, message);\n this.emit(errorType, message);\n }\n\n isControlBarShow() {\n const hasControl = this._opt.hasControl;\n const controlAutoHide = this._opt.controlAutoHide;\n\n let result = hasControl && !controlAutoHide;\n\n if (result) {\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n }\n\n return result;\n }\n\n getControlBarShow() {\n let result = false;\n if (this.control) {\n result = this.control.getBarIsShow();\n }\n return result;\n }\n\n toggleControlBar(isShow) {\n if (this.control) {\n this.control.toggleBar(isShow);\n this.resize();\n }\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {\n CONTAINER_DATA_SET_KEY,\n DEMUX_TYPE,\n EVENTS,\n EVENTS_ERROR,\n JESSIBUCA_EVENTS,\n PLAYER_PLAY_PROTOCOL,\n SCALE_MODE_TYPE,\n VERSION\n} from \"./constant\";\nimport {\n getElementDataset,\n isEmpty,\n isMobile,\n isNotEmpty,\n removeElementDataset,\n setElementDataset,\n supportWCS,\n uuid16\n} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\nimport Debug from \"./utils/debug\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n if (this._checkHasCreated($container)) {\n throw new Error(`Jessibuca container has been created and can not be created again`, $container);\n return;\n }\n\n // videoBuffer set too long\n if (_opt.videoBuffer > 10) {\n console.warn('Jessibuca', `videoBuffer ${_opt.videoBuffer}s is too long, will black screen for ${_opt.videoBuffer}s , it is recommended to set it to less than 10s`);\n }\n\n if (!$container.classList) {\n throw new Error('Jessibuca container option must be DOM Element');\n return;\n }\n\n $container.classList.add('jessibuca-container');\n setElementDataset($container, CONTAINER_DATA_SET_KEY, uuid16());\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.initDecoderWorkerTimeout = null;\n this._destroyed = false;\n this.events = new Events(this);\n this.debug = new Debug(this);\n this._initPlayer($container, _opt);\n console.log(`Jessibuca version: ${VERSION}`);\n }\n\n /**\n *\n */\n async destroy() {\n this._destroyed = true;\n this.off();\n this._clearInitDecoderWorkerTimeout();\n if (this.player) {\n await this.player.destroy();\n this.player = null;\n }\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.$container) {\n this.$container.classList.remove('jessibuca-container');\n this.$container.classList.remove('jessibuca-fullscreen-web');\n removeElementDataset(this.$container, CONTAINER_DATA_SET_KEY);\n this.$container = null;\n }\n this._opt = {};\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n try {\n this.debug.log('jessibuca', '_initPlayer', JSON.stringify(this.player.getOption()))\n } catch (e) {\n // ignore\n }\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否销毁\n * @returns {boolean}\n */\n isDestroyed() {\n return this._destroyed;\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return new Promise((resolve, reject) => {\n if (this.player) {\n this.player.pause().then(() => {\n resolve();\n }).catch((e) => {\n reject(e)\n });\n } else {\n reject('player is null')\n }\n })\n }\n\n /**\n *\n */\n async close() {\n await this.destroy();\n return true;\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (this.isDestroyed()) {\n reject('Jessibuca is destroyed')\n return;\n }\n\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this.player._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n this.player.once(EVENTS_ERROR.webglContextLostError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webglContextLostError and paused');\n }).catch(() => {\n this.debug.warn('Jessibuca', 'webglContextLostError and paused error')\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false, useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'media source h265 not support and paused');\n }\n });\n })\n\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'mse source buffer error and paused');\n }\n })\n })\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false, useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs h265 not support and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs decode error and paused');\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsConfigureError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'webcodecs Configure error reset player and play success')\n }).catch(() => {\n // reject();\n this.debug.warn('Jessibuca', 'webcodecs Configure error reset player and play error')\n });\n } else {\n this.debug.log('Jessibuca', 'webcodecs Configure error and paused');\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch((e) => {\n // reject();\n this.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n } else {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'wasm decode error and paused');\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'wasm decode error and paused error', e)\n })\n }\n })\n // fetch error\n this.player.once(EVENTS_ERROR.fetchError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'fetch error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'fetch error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.websocketError, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'websocket Error and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'websocket Error and pause play error', e)\n })\n })\n\n //\n this.player.once(EVENTS.streamEnd, () => {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'stream End and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'stream End and pause play error', e)\n })\n })\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay &&\n (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay &&\n (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.debug.log('Jessibuca', '_play ant waiting decoderWorkerInit');\n this._checkInitDecoderWorkerTimeout();\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this._clearInitDecoderWorkerTimeout();\n if (this.isDestroyed()) {\n return;\n }\n this.debug.log('Jessibuca', '_play decoderWorkerInit success and play');\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player && this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this.player._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n _checkHasCreated(element) {\n if (!element) return false;\n const gbProV = getElementDataset(element, CONTAINER_DATA_SET_KEY);\n if (gbProV) {\n return true;\n }\n return false;\n }\n\n\n toggleControlBar(isShow) {\n if (this.isDestroyed()) {\n return;\n }\n\n if (this.player) {\n this.player.toggleControlBar(isShow);\n }\n }\n\n getControlBarShow() {\n if (this.isDestroyed()) {\n return false;\n }\n let result = false;\n if (this.player) {\n result = this.player.getControlBarShow();\n }\n return result;\n }\n\n _clearInitDecoderWorkerTimeout() {\n if (this.initDecoderWorkerTimeout) {\n clearTimeout(this.initDecoderWorkerTimeout);\n this.initDecoderWorkerTimeout = null;\n }\n }\n\n _checkInitDecoderWorkerTimeout() {\n this._clearInitDecoderWorkerTimeout();\n this.initDecoderWorkerTimeout = setTimeout(() => {\n this._handleInitDecoderWorkerTimeout();\n }, this.player._opt.loadingDecoderWorkerTimeout * 1000);\n }\n\n\n _handleInitDecoderWorkerTimeout() {\n this.pause().then(() => {\n this.debug.log('Jessibuca', 'init decoder worker timeout and pause play')\n }).catch((e) => {\n this.debug.warn('Jessibuca', 'init decoder worker timeout and pause play error', e)\n })\n }\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","CONTAINER_DATA_SET_KEY","VERSION","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","loadingDecoderWorkerTimeout","autoUseSystemFullScreen","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","volume","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsConfigureError","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","webglContextLostError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","canNotDecodeClosedCodec","FETCH_ERROR","abortError1","abortError2","abort","FRAME_HEADER_EX","PACKET_TYPE_EX","PACKET_TYPE_SEQ_START","PACKET_TYPE_FRAMES","PACKET_TYPE_FRAMESX","FRAME_TYPE_EX","FT_KEY","FT_INTER","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","isPad","isAndroid","UA","supportWCS","uuid16","c","r","random","v","toString","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","removeElement","parentNode","removeChild","hevcEncoderNalePacketNotLength","oneNALBuffer","isIframe","idrBit","nIdrBit","tmp","arrayBuffer","byteLength","set","isFalse","getElementDataset","dataset","getAttribute","setElementDataset","setAttribute","removeElementDataset","removeAttribute","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","stringList","includes","JSON","stringify","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","isContextGlRenderLost","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","emitError","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","isControlBarShow","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","disablePictureInPicture","poster","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","_prevVolume","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","isStateSuspended","getLastVolume","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","decodeVideo","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","mseDecoder","getSourceBufferUpdating","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","_decodeEnhancedH265Video","flags","frameTypeEx","packetEx","codecId","ArrayBuffer","tmp32","Uint32Array","isAV1","extraData","payloadBuffer","_isEnhancedH265Header","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp8","t","abps","vbps","need","next","combine","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","isDecodeStateClosed","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","toggleBar","getBarIsShow","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","checkStatsInterval","_close","prev","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","errorType","getControlBarShow","toggleControlBar","isShow","Jessibuca","Error","_checkHasCreated","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","initDecoderWorkerTimeout","_destroyed","_initPlayer","_clearInitDecoderWorkerTimeout","_bindEvents","_resetPlayer","isDestroyed","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","_checkInitDecoderWorkerTimeout","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen","gbProV","_handleInitDecoderWorkerTimeout"],"mappings":"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B,aAAa;CACb,SAAS;AACT;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,IAAI,EAAE,IAAI;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,UAAU,EAAE,CAAC;AACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,UAAU,EAAE,CAAC;AACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,MAAM,EAAE,IAAI;AACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,KAAK,EAAE,WAAW;CAC1B,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;CACnE,gBAAgB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;CACzD,aAAa;AACb;CACA,YAAY,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,iBAAiB,KAAK,UAAU,EAAE;CACxF,gBAAgB,aAAa,CAAC,iBAAiB,EAAE,CAAC;CAClD,aAAa;CACb,YAAY,aAAa,GAAG,IAAI,CAAC;CACjC,YAAY,QAAQ,CAAC,UAAU,CAAC,CAAC;CACjC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CAC7B,SAAS;AACT;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,cAAc,EAAE,SAAS,KAAK,EAAE;CACxC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;CACrC,gBAAgB,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;CAC9D,aAAa;CACb,SAAS;AACT;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ,KAAK,EAAE,UAAU;AACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAA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"} \ No newline at end of file diff --git a/dist/jessibuca.js b/dist/jessibuca.js index b93c2e65..d7e434d8 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,r=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})),o=(i=r)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l="jessibuca",u='"3.2.12"',h={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1,loadingDecoderWorkerTimeout:10,autoUseSystemFullScreen:!0},p="init",m="initVideo",g="render",f="playAudio",b="initAudio",y="audioCode",v="videoCode",w="wasmError",S="Invalid NAL unit size",E=1,B=2,C=8,R=9,k="init",T="decode",I="audioDecode",x="close",D="updateConfig",j={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",volume:"volume",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},L={load:j.load,timeUpdate:j.timeUpdate,videoInfo:j.videoInfo,audioInfo:j.audioInfo,error:j.error,kBps:j.kBps,log:j.log,start:j.start,timeout:j.timeout,loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout,fullscreen:"fullscreen",webFullscreen:j.webFullscreen,play:j.play,pause:j.pause,mute:j.mute,stats:j.stats,volumechange:j.volumechange,performance:j.performance,recordingTimestamp:j.recordingTimestamp,recordStart:j.recordStart,recordEnd:j.recordEnd,playToRenderTimes:j.playToRenderTimes,volume:j.volume},F={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsConfigureError:"webcodecsConfigureError",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:j.mseSourceBufferFull,mseSourceBufferError:j.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError",webglContextLostError:"webglContextLostError"},V="notConnect",O="open",M="close",U="error",Q={download:"download",base64:"base64",blob:"blob"},W={7:"H264(AVC)",12:"H265(HEVC)"},J=12,P={10:"AAC",7:"ALAW",8:"MULAW"},G=38,N=0,H=1,z=2,Y="webcodecs",X="webgl",q="offscreen",Z="key",K="delta",_='video/mp4; codecs="avc1.64002A"',$="ended",ee="open",te="closed",ie=1e3,re=27,oe=38,se=40,ae="A key frame is required after configure() or flush()",ne="Cannot call 'decode' on a closed codec",Ae="The user aborted a request",de="AbortError",ce="AbortError",le=0,ue=1,he=3,pe=16;class me{constructor(e){this.log=function(t){if(e._opt&&e._opt.debug){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?t-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,r)));e.addEventListener(t,i,r);const o=()=>e.removeEventListener(t,i,r);return this.destroys.push(o),o}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var fe=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=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"]],r=0,o=i.length,s={};r0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),r=t[0].replace("data:","").replace(";base64","");let o=i.length,s=new Uint8Array(o);for(;o--;)s[o]=i.charCodeAt(o);return new File([s],"file",{type:r})}function ve(){return(new Date).getTime()}function we(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Se(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Se(e,i,t[i])})),e.style[t]=i,e}function Ee(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ce(e){let t=0,i=Be();return r=>{t+=r;const o=Be(),s=o-i;s>=1e3&&(e(t/s*1e3),i=o,t=0)}}function Re(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ke(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Te(e){return null==e}function Ie(e){return!0===e||!1===e}function xe(e){return!Te(e)}function De(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,o=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(o=Math.round(o))<10&&(t+="0"),t+=o.toFixed(0)}return t}function je(e){const t=e||window.event;return t.target||t.srcElement}function Le(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Fe(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Ve(e){return!0!==e&&"true"!==e}fe.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 Oe{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function o(){r.off(e,o);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const r=i[e],o=[];if(r&&t)for(let e=0,i=r.length;e=200&&t.status<=299}function Je(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Pe=Ue.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ge="object"!=typeof window||window!==Ue?function(){}:"download"in HTMLAnchorElement.prototype&&!Pe?function(e,t,i){var r=Ue.URL||Ue.webkitURL,o=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",o.download=t,o.rel="noopener","string"==typeof e?(o.href=e,o.origin!==location.origin?We(o.href)?Qe(e,t,i):Je(o,o.target="_blank"):Je(o)):(o.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(o.href)}),4e4),setTimeout((function(){Je(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(We(e))Qe(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Je(r)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof e)return Qe(e,t,i);var o="application/octet-stream"===e.type,s=/constructor/i.test(Ue.HTMLElement)||Ue.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&s||Pe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},n.readAsDataURL(e)}else{var A=Ue.URL||Ue.webkitURL,d=A.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Ne extends Me{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.isContextGlRenderLost=!1,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isContextGlRenderLost=!1,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["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 o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),r}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,r,o,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,r),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,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Y,this._initContext2D()):this._supportOffscreen()?(this.renderType=q,this._bindOffscreen()):(this.renderType=X,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 q:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case X:if(this.isContextGlRenderLost)return;try{this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2])}catch(e){this.player.debug.error("CanvasVideoLoader","render",e),this.isContextGlRenderLost=!0,this.player.emitError(F.webglContextLostError)}break;case Y:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(o[t]||o.png,s);if(r===Q.base64)return a;{const t=ye(a);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}clearView(){switch(this.renderType){case q:(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 X:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Y: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;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&e.useWebFullScreen?t-=G:i-=G);let r=this.$videoElement.width,o=this.$videoElement.height;const s=e.rotate;let a=(t-r)/2,n=(i-o)/2;270!==s&&90!==s||(r=this.$videoElement.height,o=this.$videoElement.width);const A=t/r,d=i/o;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class He extends Me{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const r=this.player._opt;r.useWCS&&r.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),o(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(j.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===r?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===r?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===r?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===r?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===r&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=r,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(o[t]||o.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===Q.base64)return A;{const t=ye(A);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&(this.vwriter.write(e.videoFrame),e.videoFrame.close())}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&i.useWebFullScreen?e-=G:t-=G),this.$videoElement.width=e,this.$videoElement.height=t,270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e);let o=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+r+"deg)",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?He:Ne}}class Ye extends Oe{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._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(j.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=be,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=P[e.encTypeCode],this.audioInfo.encTypeCode=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(j.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ie)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 r=0;r0?this.player.emit(j.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(j.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(j.volumechange,this.player.volume),this.player.emit(j.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(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}getLastVolume(){return this._prevVolume}}class Xe{constructor(e){return new(Xe.getLoaderFactory())(e)}static getLoaderFactory(){return Ye}}class qe extends Oe{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=ve();const r=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,r).then((e=>{const t=e.body.getReader();this.emit(j.streamSuccess);const r=()=>{t.read().then((e=>{let{done:t,value:o}=e;t?i.close():(this.streamRate&&this.streamRate(o.byteLength),i.dispatch(o),r())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(Ae)&&-1===t.indexOf(de)&&e.name!==ce&&(this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))};r()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ze extends Oe{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=V,this.wsUrl=null,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=V,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:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(j.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=O})),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(j.streamEnd),this.socketStatus=M})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(F.websocketError,e),this.player.emit(j.error,F.websocketError),this.socketStatus=U,r.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ve(),this.wsUrl=e,this._createWebSocket()}}class Ke{constructor(e){return new(Ke.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?qe:e===s?Ze:void 0}}var _e=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new r(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var r=new o(e,t);(h=new r(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var r=h.blob;if(!r){if(!i)throw"Recording failed.";h.blob=r=i}if(r&&!t.disableLogs&&console.log(r.type,"->",b(r.size)),e){var o;try{o=l.createObjectURL(r)}catch(e){}"function"==typeof e.call?e.call(s,o):e(o)}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 r=i?i.blob:(h||{}).blob;if(!r)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 o=new FileReader;o.readAsDataURL(r),o.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(r)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new r(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,r=0;r-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 r=t.split(".");t=r[0],i=r[1]}var o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=o,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,r=new EBML.Decoder,o=EBML.tools,s=new FileReader;s.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),r=i.substring(e+7)),-1!==(t=r.indexOf(";"))&&(r=r.substring(0,t)),-1!==(t=r.indexOf(" "))&&(r=r.substring(0,t)),o=parseInt(""+r,10),isNaN(o)&&(r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=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 r;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(r=new f).addTrack(w(e,"audio")[0]):r=new f(w(e,"audio")),e=r;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 o,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){s=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),o&&(o=null),m&&!B()&&(r="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&r.mimeType&&(MediaRecorder.isTypeSupported(r.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType),r.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{o=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){o=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),o.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)});t.ondataavailable(o)}},o.onstart=function(){d.push("started")},o.onpause=function(){d.push("paused")},o.onresume=function(){d.push("resumed")},o.onstop=function(){d.push("stopped")},o.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 (",r.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&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(a(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(o&&!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(r,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 r,o=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),o=[],s=Number((e.length-1)/(r-1));o[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,o.leftchannel=s,o.rightchannel=a,o.numberOfAudioChannels=d,o.desiredSampRate=c,o.sampleRate=b,o.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,o.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?r.connect(p.createMediaStreamDestination()):r.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,o.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var r=new Blob([i],{type:"audio/wav"});t.ondataavailable(r),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 r,o,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)r=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";r=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 r?e=r.captureStream(25):"mozCaptureStream"in r?e=r.mozCaptureStream(25):"webkitCaptureStream"in r&&(e=r.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=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 r=h.frames.length;h.frames.forEach((function(e,i){var o=r-i;t.disableLogs||console.log(o+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,r);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 r=this;i&&o?o.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),r.blob=i,r.blob.forEach&&(r.blob=new Blob([],{type:"video/webm"})),e&&e(r.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:(r=document.createElement("canvas"),o=r.getContext("2d"),r.width=e.width,r.height=e.height,o.drawImage(e,0,0),r),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var r,o;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,o instanceof C&&o.pause()},this.resume=function(){d=!1,o instanceof C?o.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,o){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=r&&r>=0&&r<=1?r:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var r,o,s,a=function(){!v&&s-r<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);r=0,o=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 r(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),o.height=s[0].height*n}else o.width=a.width||360,o.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!r){var i=0,o=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,o,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,o,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var r=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),r.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),r.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(r)}))},this.releaseStreams=function(){i=[],r=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.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(){r=!1;var t=function(){var e;p(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,r,o=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 o;i=new j(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){w(e,"video").forEach((function(e){o.push(e)}))})),o).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()),(r=new C(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){o.blob=t,e(t),o.clearRecordedData()}))},this.pause=function(){r&&r.pause()},this.resume=function(){r&&r.resume()},this.clearRecordedData=function(){r&&(r.clearRecordedData(),r=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),r&&i&&(i.appendStreams(o),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,r,o;function s(){return new ReadableStream({start:function(r){var o=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),r.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(r=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),r.addEventListener("message",(function(e){"READY"===e.data?(r.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!"):r.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(o||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],o=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){r?(r.addEventListener("message",(function(t){null===t.data&&(r.terminate(),r=null,e&&e())})),r.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],o=!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 r=this;r.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{r.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{r.recordRTC.stopRecording((function(i){r.blob=r.recordRTC.getBlob(),r.blob&&r.blob.size?e(i):t("Empty blob.",r.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{r.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{r.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{r.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(r.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(r.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(r.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(r.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(r.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class $e extends Oe{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=_e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(j.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(j.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(j.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(j.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(j.recordEnd);const e=(this.fileName||ve())+"."+(this.fileType||c);Ge(this.recorder.getBlob(),e),this._reset(),this.player.emit(j.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 et{constructor(e){return new(et.getLoaderFactory())(e)}static getLoaderFactory(){return $e}}class tt{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:x}),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 p:e.log("decoderWorker","onmessage:",p),this.player.loaded||this.player.emit(j.load),this.player.emit(j.decoderWorkerInit),this._initWork();break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ve()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case y:e.log("decoderWorker","onmessage:",y,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case m:if(e.log("decoderWorker","onmessage:",m,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(F.webglAlignmentError);this.player.video.initCanvasViewSize();break;case b:e.log("decoderWorker","onmessage:",b,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case g:this.player.handleRender(),this.player.video.render(i),this.player.emit(j.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ve(),this.player.handlePlayToRenderTimes());break;case f:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case w:i.message&&-1!==i.message.indexOf(S)&&this.player.emitError(F.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:k,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const r={type:B,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:T,buffer:e,options:r},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:E,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:T,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:I,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:D,key:e.key,value:e.value})}}class it extends Oe{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,r,o){const s=this.player;let a={ts:i,cts:o,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===B&&(a.isIFrame=r),this.pushBuffer(e,a)):t===B?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,r):t===E&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;e.type===E?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===B&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===E?this.bufferList.push({ts:t.ts,payload:e,type:E}):t.type===B&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:B,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,o=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(o===le){if(r===pe){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,B,0,!0,0)}}}else if(o===ue){let i=e,o=0;const s=r===pe;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,o=n[0];i=Fe(e.slice(8),s),this._doDecode(i,B,t,s,o)}}else if(o===he){const i=r===pe;let o=Fe(e.slice(5),i);this._doDecode(o,B,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends it{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),r=this.player;for(;;){t[3]=0;const e=yield 15,o=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(o){case C:r._opt.hasAudio&&(r.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,E,a));break;case R:if(r._times.demuxStart||(r._times.demuxStart=ve()),r._opt.hasVideo){r.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,B,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return r=>{let o=new Uint8Array(r);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}}class ot extends it{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),o=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case E:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,o)}break;case B:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ve()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,o);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,r,o,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class st{constructor(e){return new(st.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?ot:e===n?rt:void 0}}class at{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 r=Math.min(i,this._current_word_bits_left),o=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,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 nt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[o]=t[e],o++);return new Uint8Array(r.buffer,0,o)}static parseSPS(e){let t=nt._ebsp2rbsp(e),i=new at(t);i.readByte();let r=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let s=nt.getProfileString(r),a=nt.getLevelString(o),n=1,A=420,d=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:nt.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,r=8,o=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(F.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Z:K});this.player.emit(j.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(r)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ae)||-1!==e.toString().indexOf(ne))&&this.player.emitError(F.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===J)return void this.emit(F.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=ve());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}return{codec:i,description:e}}(e.slice(5));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(F.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const ct={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var lt=Object.keys(ct).reduce(((e,t)=>(e[t]=`\n \n ${ct[t]?`${ct[t]}`:""}\n`,e)),{}),ut=(e,t)=>{const{events:{proxy:i}}=e,r=document.createElement("object");r.setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.type="text/html",r.data="about:blank",Se(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,s=e.height;i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===s||(o=e.width,s=e.height,e.emit(j.resize),n())}))})),e.$container.appendChild(r),e.on(j.destroy,(()=>{e.$container.removeChild(r)})),e.on(j.volumechange,(()=>{!function(e){if(0===e)Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","flex"),Se(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Ee(t.$volumePanel,"height")||60,r=Ee(t.$volumeHandle,"height"),o=i-(i-r)*e-r;Se(t.$volumeHandle,"top",`${o}px`),Se(t.$volumeOn,"display","flex"),Se(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(j.loading,(e=>{Se(t.$loading,"display",e?"flex":"none"),Se(t.$poster,"display","none"),e&&Se(t.$playBig,"display","none")}));const a=i=>{let r=Ie(i)?i:e.fullscreen;Se(t.$fullscreenExit,"display",r?"flex":"none"),Se(t.$fullscreen,"display",r?"none":"flex")},n=()=>{Re()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,r=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${r}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{fe.on("change",a),e.events.destroys.push((()=>{fe.off("change",a)}))}catch(e){}e.on(j.webFullscreen,(e=>{a(e),n()})),e.on(j.recording,(()=>{Se(t.$record,"display",e.recording?"none":"flex"),Se(t.$recordStop,"display",e.recording?"flex":"none"),Se(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=De(0))})),e.on(j.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=De(e))})),e.on(j.playing,(e=>{Se(t.$play,"display",e?"none":"flex"),Se(t.$playBig,"display",e?"none":"block"),Se(t.$pause,"display",e?"flex":"none"),Se(t.$screenshot,"display",e?"flex":"none"),Se(t.$record,"display",e?"flex":"none"),Se(t.$qualityMenu,"display",e?"flex":"none"),Se(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ke(""))})),e.on(j.kBps,(e=>{const i=ke(e);t.$speed&&(t.$speed.innerHTML=i)}))};function ht(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}ht('@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;-webkit-user-select:none;user-select:none}.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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAGDElEQVRoQ82ZaahVVRTHf//moKKggQawcmg0olGl0awvRoMVBRGFlQ1YQZIZqRVKmJmFgVk59EFQykYjgmajbJ7n2WiAbKKCBq0Vfznndd723Lvvve/5bMH9cvfaa63/2WuvaYteoIjYHDgEOAAYDOwIbA/4f9PvwHfAt8DbwGvAS5L8f49Ine6OCO89CTgFOBrYqU1Z3wBPAUskPdDm3i72jgBExCXAWGBQp4qTfR8CMyXd0a68tgBExEjgBmCfdhW1yP8eMFHS/S3y0xKAiNgQmA2MaUHwB8DnwNfAbwX/FsDOwG7Ani3I8ElcLOnvHG8WQET0Ax4C9msi7BHgbuAFSXaHhhQRewBDgZOBE5qwvuV1SSuayWsKICIcVZ4Atq4R8mdxKnMkfZT7UnXrEeE7dD7gO7VpDc/PwAhJrzaS3xBAROzrUFcJhVUZjhrjJX3cieHpnogYUNytUTXy/gAOlvROna5aABHhGG5f3qZmk33ztt4wvAbIBcCcBicxSNLKdK0RgNeB/RPmVcBxkp5eF8aXMiPiKODRGpd6XZJduhutBSAipgNX1Bg/tJkv9iao4u4tBzZJ5N4oaXz1v24AImIvwLE4peGSnDX7jCLC2f3JGoV7S3q//D8F8DJwULJpgiQnrz6niLgSmJYofkXSwWsBiIgRwGPNmPscARARDqGp7zu0Orz/l4kjYhlweGLk4Ebhq8oXEc6wGwH/tAhyA2C1JGfsphQRTqBvJkzLJB3ZBaBIKGkGXSqpWab013FWvacooXO21K07256WS4QRsRQ4PhHgsPrxmjsQEZOB6xKGIZJebGZVRDwOHNOJ5ZU9j0s6NqPnUJcpCc9kSVNKAA5ZQyoMn0gamDMsIj4rCrQca7P1zyT1zwmIiE+AKt9yScNUFGuuZaoxd7okR4Ccfzq997S0fleSy5acrjQ//QUMNADXH/cmu0dKcoWZE+r2MKs8I+YdSW5Dc7rcizycMI0ygKuA6ysLjiT9JX3RgtC+BLArYJet5q4JBuBG5aKKsV/ZryWt/p8BcJj2R3VjVNJsA1gEnFH5821JzZqXLtaI6LMTsNIafYsM4L6iOyoNe1FSNSI1PIj1AMCh1CG1pPsNYEkxGin/fFVSWg/VglgPAF4BDqwYs8QAFgDnVP78SJIzbJbWAwBXC9VRzgIDcLVXjfm/AP0kuR/NhbY+uwMR4e7QDf6WFaOmGYBHJbcnlh7USvPSlycQEXYdu1CVxhiARxzPJwsXSarrTbux9TEAh3qH/CqtKSU2Az5NZpsPSTqxBRdy49/SfWki60NJ2WFXTUXqwdmAsphbCJxZUeIGfltJvg8NKSIMfPcc0Mx6tpiLiK2AH4qeoxS3UNJZJYC6emicpJkZAOOAGT0EcLmkmzvQM8oz1BLAxsX8vjqBWynJ86FcJDoLGO4OC8jOMgthnrX696Qkn35Oh+dB21aYfgJ2kLSqqzCKiGuAaxNJkyRNzSlYl+sNmq2pkiZZbxWAJ8g/Aj6NksI+3kplui5AFL2271m1AvVJb1fmqXSsMhGYkhjznqSeNi0d4YsIz3/SCNXNK+omcy5ZPVKv0r2STu3Iig431dRolrRCkvuCLqoD4BlM3Th7nqTzOrSnrW0RcSdQp+tASX4gbAzAK8Ub2KwarQ8Cp0vy20CvU5FUFwN1SfRSSbemSpu9D9wCXFZjpacDoyU925sIIuIw4K5k8lCqmCWpzpbmb2QRMRc4t4GhfiOYJunLngCJiF2Aq4ELG8iZL6mRDflHvohwpnXGrSM/VM8DFkt6rh0gxRd3K3s24BBeRzMkpaP+bnzZR77iTvgLuOR29mxEDnmer7rk9dPT98CvBbNreGdSD8s8WT4i81rpjD5G0vzcR2kJQAHCs5ubgKZjwERhednrHvAa2eaPMFaSm6UstQyglBQRDm92qWwJnNXencGnZpdp67W+bQAVIKOLCz6sTUNTdjdTcyW5N2+bOgZQAeLHQLuV5/UeM6ZZPDXKfa1nqs/4QUXSG21bXdnQYwBV5RHhy2rXcmh0E+5GxOTGyCWwp34fSCovd09sX7P3X2uzPXCoLsVMAAAAAElFTkSuQmCC") 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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHTElEQVRoQ+1Zb4xcVRX/nZl5u2/LrrO0EFKoBYpVaRu3u/e+3WlDZJdIRLQhNLIiEggxqURIjGmqTTAmWiRpjH4wghq+KIQYupYQEvEDmEVdyu7OfbPbzQaEYqtSwTb4Z3aV7s6b9445mzvm7XRm3oy7oanZ82ny5txzz++ec8+/S7jIiS5y/bEG4EJbcJkFpqenryqXy6cbKBUB+AeANIBuAG8AuAzAn06ePOkNDw+H9dZOTU11h2H4EwB7ALwL4FIA7wFw7O9aSxkAE9H9SqnHazGc50LGGFFQlGuW/pbNZq/aunXrYtICY8xmAD8C8HEAnUn8sf9/oLX+SiKAQqFweRRFvwewvgbzmwA+BOAkgEsAZAG85rpubseOHaVmlTHGfBTAYwA6gKU7WCaiOWaWPT9mv1eLO6S1/mYiAGPMddYtUtXMRPRVx3F+FkXRup07d/7FGDMEYExrHTSrfIVvfHx8Uy6XO22MWae1fu/IkSPpbdu2pRcWFmpakYgeVEo92gyAdQCKADI1HZL581rrp4lIfHPV6Pjx45cEQfCvBgL3a62/nwhgZmbm0lKp9OeYf56rMqmc9v4oikb6+/v/uhoIGigvAUGChdBBrfXhRAD5fL6XiCZsZDhHRAeY+VBVlIiYeTQMw725XG5uJSDqKc/M9xDR1wFsF/lEdKdS6ulEABMTExvS6fQMgCsBhPPz825nZ+dnieinANrjApj5mSAI7t61a9fC/+JSDZS/t62t7WgQBH+0IVoA7GsqjDIz+b4vCyXcnSuXy9fmcrkz+Xz+TgB3ENHeqlN43HXdB7dv3x60AqKR8p7nPXHixIn2YrEo7itRipn5057n/SrRAhbA320eEAGbtdbvyvfJycn16XR6BIBEnzg9PD8//63BwcGwGRBJylcEG2MkbEtUFAS3NgVAmI0xkl23Wt/bppR6rSK0UChcGUXRcwBUFYjDWuuDSffBHpBk82XEzPfKyVc+Wlf+HQDJGQLgDs/zjiZawJrudQBXAzirlNpIRMs2nJiY+HA6nRYQH4kJ7NZaS/htSBLlgiB4jJnFJZeoWnn7jYwxDxCRJK/LmXnI87yXEgHEzHs2m81urlce5PP5fiL6BYAPAmhrJZmNjo5murq6ngdwcy3lK0rKYc7Nze1n5gNE9Cml1HgiAGviguu6A0nlge/7N83Nzf12aGionHTy1f+Pjo5KdBuOu00tGZKpmfmHAJ5oygJjY2Nd3d3di0nKt6rwSvjFK6Iocnp7e/+ZaIGVbHSh1q51ZBfq5Cv7rllgzQIrPIGLwoUkqdVLqssASCKbnp6+ure3VyrSRGLmVHWpkbioRYbx8fErHMcZbKofsGMVKRHu01pLc1+XJMGUSqXPEdGTrZQSIlAycVdX1+FSqXRw9+7dUvXWJFE+k8lI53e71vrZphKZMeYPMvvJZDK3SfNea1GsZpoH8EWl1NFmLTE7O9u2sLDwNoANAA65rvtwrcw/NTV1TRiGp2w/8AXP836eCMAWWicAXENEvymXy/sGBgakvP4v1ajnzzDzl7TWzyX1A1KquK4r7hkf2xxQSn2vem2sHwijKLqlv7//xUQAtpyW6YBMJUJm3hNvJBo0I3XL3fim1kVfAHB9/Dsz3+95nkztlsgClYr1BgBRKpW6oa+v75VEAMJgjDkrNbj8jndCzXZSSXfU930l/bRtWyvsC+KKAEYq98kYIzy3W4abtNajiQCsBQTAByzzsNZ6ZLWUrygwOTl5YyqVEgXjriQjzVcdx9nb09Nz1vf9F5j5EzK5Y+ZBz/NeTgRw7Nixjra2NpkLycBW5jK3OY7zUq2hU6NmJMkK8r/v+3uYWXrsZdMOAM86jnN3EAS/BjAgjgDgy1rrHycCsBNkCZ9X2DtwIxGNVS9cqfLWPalQKNzFzN8GcK2dQCxtRUTSxPQx827L+13P876WCMA27W8BOG82Wlm8GsrHZNHIyEhqy5YtvwTwyXqWI6KHlFKPJAKwYVSiULVZl9aupvJxZexIU+J8TRBE9B2l1DcSAdjLKneg1nh9fzabfbRYLG4qlUpvd3R0bCqXy7tOnTr1VKOHjVqb2jC5j4gmwzAM0+l0OgzDVCqVkvGhuO8yYuZHPM97KBGA7/vXM/O0TBpqMMvo+x17waWGkhLgMrGK1vrJpCRWkRcrD+STvCvIXiJLhgNdddzoAa21vCmcR8uKOWPMRgBSPrRSpcpY8T6l1FNJ0UfeBTKZjNyxlqg60cUXL1PUupBsIO9XMkqX96v4mFvcS0Z+Mg86TUTtzCxvCh1E9BmllPxXk+zrzxQRzTBzJxG5zCzuIjJ32DG+WCOuk1hFqoKlfNSMBWSU5zDzFnEPInqLmSWpbZANARzRWr8jQHt6ev4tAuX34uLi+iiKiknjdskzlepzdna2s729PSgWi24YhuszmYxn99sYRdHSGx0RnUmlUqf7+vqO1zuYVlylJbO/X8xrAN6vk15zoQt90v+3FvgPXUePXrKTg9MAAAAASUVORK5CYII=") 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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHsUlEQVRoQ+2Z969VVRCFv7H33nvvvfcSe2+xxJgY4z9j/Bs0/mABFQXBhl1sgNjQSCyoiL2BDaxs873MJsfDuZd7gfeQxJ3cvAfv3HP22rNmzZo5wRq+Yg3fP/8DWN0RXCYCpZSzgM2Br4GPgW8j4s9hNlpKWQfYETgUOB44GtgMmA1MBF4BFkdEGea+Xdd2AbgF2B2YD0wHZkbEZ4M+qJSyIbArcARwMnAUsC/wO/AscCfwQkT8Meg9+13XBeBx4EjgZ+ClPLGXI+KbfjcqpXivLYA9gWOA0/PnDsDGwOeA977bCAwb1V7P7gIwDpBG2wJfAg/nZ3oXiFLK2sD6ef0+uWlp48kbSddfwAfAVOB+YNZoRuBG4CLgbGDLpNLTwIPAjDaIUsomwM7A4cCJyfm9ga0Bwbn+Bt4fKwDyV+5eAZyayWgkHgGmmBdNEKUUk/U44DzgNGA/YN1WyBWBucATwH3Aq6MZgbXyRAVxMXABsFUrEi9GxILkvbQ5JwGfABiR9ho7APXJpRSTzxO9CjgF2ClBPJrJ+JYSm/Io2Mvyeq+r1Km3G3sAPrmUsktu3pyQItskiFkpiS8CnybfBXl+5sBu8K8qP3YASik+/DdgEaBWbw+cCVwHnJRF7gd5nJEwwT9JmglC2hmRZiRUoQ8HzYFSynrABhk+C17PQtolozcBC/Kklb7FwCHANbk5f3d5zZuAlDI5rdoqj/pvxMwHBaHKaE3ie5eXxKWU7QCjb6WeHxHfDVMH1GlV521AinyUSnR5Jqr6XhP1JzUdeKwBQpqdkSBUMf+tMAjA68YPAOBA4FhgSToBJbhzdUVADyQlrMKTgdfyZJVVE1qLYGWta2FGQpm1UPldT1AQl2ZhE4R2xGgZAetJT1qUUoyeVDQCUyJi5jAA/JJlX99iNF7OgnYl4EcKbdS64Y8JtNJpXoKwGJrYFjm9kPliBDRznq4GT+No3ZCqHoY/zaVr8xnjI+KFYQEojz7M05JGPsQICOCwVgTakdB6mBOCsEIrxdWamDMT0iSapAcBB+T99Vq6Vb8nTQWgqx23IgCMwDONCAhAOghAo9dVrARSI1Hp5H1UMUG4WekpODcqrQQm1aw5ioDfU920Ih6YHuuBiJAFA+fASOY3ABhuXeYljRzYtNcNkwavZ/4YRblvJExM5dTN+38aPTfpx9/nAHdlHgnI52nNJ0WEtn4oAIax5oBfHgaAD5LLJp72WRDSoyb+91ln9s8Dsb5owd8Bbk/gyrFSbK49FBEzxhpAs05IC/NIGbXH0JnKbQFIyeuBvRLAbW44VW+1A2jmxJMZjXd1odlD7JER0L7bsRkBAeh4zQ9ltEZgzCnUjLh0MicmJZ0+TBD2Gkbg5pTm94A7snmSQv8ZAIKR956iEjs1IlQczaJ14obsJ7xGibV4mnOVQpNXRxJ35Zx+Zhpwj5GIiIWlFOVSo6j5ky4WLBNflTMCqtBqS+IuEMqnfshEVe91vUqsYxddsImubJsDyqjFTgBD54AevymjtZDphbQF/epAnxIxYh+sMc9nsiqPUse2VOeqOZRednk2SNrqiREhqKHqwFdZyOxfNXUC0I0KwGFVr0rc6zkWMM2bG7Jbsy6oTEZC2pjo0sUiah/iWObqdLH3R4QyPBQA7fRz2YBXANWNCqBt5vqdun/7NTepadOpujykOu2QItoMI+RyuuFh6ZYnDGslPAHD7Mk4BvTmypoAPBXNXHvqsDwAUsND8aQtYvJeu2Ak9EZq/7SIEJTqdHCOdewjTHjtx8AReCP7XBsVT8gC45BLWfNUmg3N8jZe/24E5Lb38nAEoPrIfYE9VaOd0w6jZHGTbh9EhNcMDODWDKeKIPIvsh/Qo1+Ykqf5ks+DLtXG++lwjazfdRRzbgOENcIaYGLrar1GN/prRPj9gQHIP2lkuNVuGwzlzBOxU7LntSvTCph4gyyHAwLQF1mRPVGpaERteOq0w0hI26UTQGdP/abYXS2lmzWZlkSE6iEnvc7S76alkP2q2q2LtGrK1X6rjlWsATZJWguHZfYCqlvtCeoE0Eg4AbSx6rsGfkNTSnGTqo+8tYsyUsqdPt+mpV9iVwBWWVvEEXuccyersEWrTgAtdkZipHOLCOtEzzUwgHqHdJImtRs3Cs5F7bYsRBa4rnu2B1uO10ckszE8U+Xs3FSnnrPYNpKhATQoZUNu+bcyGwk/5ong2vdtA5DjTXqqSnUo1o5E51S8AlkhAI1oSBsfrm6b4OaGvyuDTZUSQHMyt8z7gVYk6lTc4uaoRoXSTiyMiF+aUVgpABkNtdpCZ16Y4OaGUbHLqnkxCABzzHFkOxLSyeT31dTciLCOLF0rDaARDVVKVXJq4Rsac0PV0ke57LOVUe207906B1sZCXPBnDDHlGpP325tTu0lVgmF2glVSlGlPEUT3Eg4DFbvBVdfVzl56PmOLNXOg/D7RtQa4YxW8PPaqrTKItBSKR8qCLksJWzgLWbaaOvASxFhgexcpRQrsAehSCgWTsOdj/7YfrOzygE0gFjgfN0kDaSVUbAaa6N9xaTB67nyXbP0UQxUrEVdtBtNACa3Rc9ISCOLne5Tdzt7eQBSIEzsukedwTIvxkcNQL/TXZV/W+MB/AMANfVPjBGemwAAAABJRU5ErkJggg==") 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 pt{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,r=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${lt.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&r.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${lt.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${r.audio?`\n
\n ${lt.audio}\n ${lt.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${r.play?`
${lt.play}
${lt.pause}
`:""}\n ${r.screenshot?`
${lt.screenshot}
`:""}\n ${r.record?`
${lt.record}
${lt.recordStop}
`:""}\n ${r.fullscreen?`
${lt.fullscreen}
${lt.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ut(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e;function o(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return we(i-e.y-o/2,0,r-o/2)/(r-o)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=r})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","block"),Se(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=o(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(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||(Se(t.$controls,"display","block"),o())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Se(t.$controls,"display","block"),o()))})),i(e.$container,"mouseout",(()=>{s(),Se(t.$controls,"display","none")}));let r=null;const o=()=>{s(),r=setTimeout((()=>{Se(t.$controls,"display","none")}),5e3)},s=()=>{r&&(clearTimeout(r),r=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function o(e,t){r[e]?r[e].push(t):r[e]=[t]}o(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),o(oe,(()=>{e.volume+=.05})),o(se,(()=>{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=r[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Le(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Le(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Le(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Le(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Le(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,o=e.video.$videoElement.width/e.video.$videoElement.height;if(r>o){const r=(t-i*o)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/o)/2;e.$container.style.padding=`${r}px 0`}}toggleBar(e){this.$controls&&(Ie(e)||(e="none"===Ee(this.$controls,"display",!1)),Se(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Ee(this.$controls,"display",!1)),e}}ht(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class mt{static init(){mt.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 mt.types)mt.types.hasOwnProperty(e)&&(mt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mt.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,r=Array.prototype.slice.call(arguments,1),o=r.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 mt.box(mt.types.trak,mt.tkhd(e),mt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,o=e.presentHeight;return mt.box(mt.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,r>>>8&255,255&r,0,0,o>>>8&255,255&o,0,0]))}static mdia(e){return mt.box(mt.types.mdia,mt.mdhd(e),mt.hdlr(e),mt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return mt.box(mt.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?mt.constants.HDLR_AUDIO:mt.constants.HDLR_VIDEO,mt.box(mt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mt.box(mt.types.smhd,mt.constants.SMHD):mt.box(mt.types.vmhd,mt.constants.VMHD),mt.box(mt.types.minf,t,mt.dinf(),mt.stbl(e))}static dinf(){return mt.box(mt.types.dinf,mt.box(mt.types.dref,mt.constants.DREF))}static stbl(e){return mt.box(mt.types.stbl,mt.stsd(e),mt.box(mt.types.stts,mt.constants.STTS),mt.box(mt.types.stsc,mt.constants.STSC),mt.box(mt.types.stsz,mt.constants.STSZ),mt.box(mt.types.stco,mt.constants.STCO))}static stsd(e){return"audio"===e.type?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.mp4a(e)):"avc"===e.videoType?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.avc1(e)):mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=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 mt.box(mt.types.mp4a,r,mt.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=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 mt.box(mt.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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,r>>>8&255,255&r,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 mt.box(mt.types.avc1,o,mt.box(mt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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,r>>>8&255,255&r,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 mt.box(mt.types.hvc1,o,mt.box(mt.types.hvcC,t))}static mvex(e){return mt.box(mt.types.mvex,mt.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 mt.box(mt.types.trex,i)}static moof(e,t){return mt.box(mt.types.moof,mt.mfhd(e.sequenceNumber),mt.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 mt.box(mt.types.mfhd,t)}static traf(e,t){let i=e.id,r=mt.box(mt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=mt.box(mt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mt.sdtp(e),a=mt.trun(e,s.byteLength+16+16+8+16+8+8);return mt.box(mt.types.traf,r,o,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,mt.box(mt.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 r=e.duration,o=e.size,s=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),mt.box(mt.types.trun,i)}static mdat(e){return mt.box(mt.types.mdat,e)}}mt.init();class gt extends Oe{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(j.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(j.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===ee}get isStateClosed(){return this.state===te}get isStateEnded(){return this.state===$}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,r){const o=this.player;if(o)if(this.hasInit){if(i&&0===e[1]){let t=At(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const o=t-this.firstRenderTime;this._decodeVideo(e,o,i,r)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===J)return void this.emit(F.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=ve()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,r){let o=e.slice(5),s={};s=At(o);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:o,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=mt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,r){const o=this.player;let s=e.slice(5),a=s.byteLength;const n=o.video.$videoElement,A=o._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(mt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=mt.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&&o.demux.delay||0}),o._times.videoStart||(o._times.videoStart=ve(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(_),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(j.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(F.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(F.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(j.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(F.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(F.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(j.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ft=()=>"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,bt=()=>"wakeLock"in navigator;class yt{constructor(e){if(this.player=e,this.enabled=!1,bt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ft()?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 r=document.createElement("source");r.src=i,r.type=`video/${t}`,e.appendChild(r)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(bt())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(ft())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;bt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ft()?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 vt extends Oe{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},h,t),this.debug=new me(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(Re()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),this._opt.autoUseSystemFullScreen&&(fe.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ve(fe.isEnabled)&&Ve(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0)),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(_)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new ge(this),this.video=new ze(this),this._opt.hasAudio&&(this.audio=new Xe(this)),this.recorder=new et(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new tt(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new dt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new gt(this),this.loaded=!0),this.control=new pt(this),Re()&&(this.keepScreenOn=new yt(this)),(e=>{try{const t=t=>{je(t)===e.$container&&(e.emit(L.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};fe.on("change",t),e.events.destroys.push((()=>{fe.off("change",t)}))}catch(e){}if(e.on(j.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(j.play,(()=>{e.loading=!1})),e.on(j.fullscreen,(t=>{if(t)try{fe.request(e.$container).then((()=>{})).catch((t=>{Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{fe.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Re()&&e.on(j.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(L.fullscreen,e.fullscreen)})),e.on(j.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[j.timeUpdate],i=[j.stats,j.playToRenderTimes,j.audioInfo,j.videoInfo];Object.keys(j).forEach((r=>{e.on(j[r],(o=>{t.includes(r)||(i.includes(r)&&(o=JSON.stringify(o)),e.debug.log("player events",j[r],o))}))})),Object.keys(F).forEach((t=>{e.on(F[t],(i=>{e.debug.log("player event error",F[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=je(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(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()))})),r(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this.debug.log("Player","init and version is",u),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");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Re()&&this._opt.useWebFullScreen?(this.emit(j.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(j.fullscreen,e)}get fullscreen(){return fe.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(j.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(j.playing,e),this.emit(j.volumechange,this.volume),e?this.emit(j.play):this.emit(j.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(j.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(j.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ke(this)),this.audio||this._opt.hasAudio&&(this.audio=new Xe(this)),this.demux||(this.demux=new st(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new gt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new tt(this),this.debug.log("Player","waiting decoderWorker init"),this.once(j.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r();this.loading=!0,this.playing=!1,this._times.playInitStart=ve(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=ve(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(F.webcodecsH265NotSupport,(()=>{this.emit(F.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(F.mediaSourceH265NotSupport,(()=>{this.emit(F.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.mediaSourceH265NotSupport)})),this.mseDecoder.once(F.mediaSourceFull,(()=>{this.emitError(F.mediaSourceFull)})),this.mseDecoder.once(F.mediaSourceAppendBufferError,(()=>{this.emitError(F.mediaSourceAppendBufferError)})),this.mseDecoder.once(F.mediaSourceBufferListLarge,(()=>{this.emitError(F.mediaSourceBufferListLarge)})),this.mseDecoder.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(F.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(F.fetchError,(e=>{this.emitError(F.fetchError,e)})),this.stream.once(F.websocketError,(e=>{this.emitError(F.websocketError,e)})),this.stream.once(j.streamEnd,(e=>{this.emitError(j.streamEnd,e)})),this.stream.once(j.streamSuccess,(()=>{i(),this._times.streamResponse=ve(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{r(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){if(this.audio){const t=this.audio.getLastVolume();this.audio.mute(e),this._lastVolume=e?0:t||.5}}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(j.timeout,j.delayTimeout),this.emit(j.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(j.timeout,j.loadingTimeout),this.emit(j.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(j.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ve()),xe(e.ts)&&(this._stats.ts=e.ts),xe(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=ve();t-this._startBpsTime<1e3||(this.emit(j.stats,this._stats),this.emit(j.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(j.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(j.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wt extends Oe{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var r,o,s;i.classList.add("jessibuca-container"),r=i,o=l,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),r&&(r.dataset?r.dataset[o]=s:r.setAttribute("data-"+o,s)),delete t.container,t.forceNoOffscreen=!0,Re()&&(t.controlAutoHide=!1),xe(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),xe(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.initDecoderWorkerTimeout=null,this._destroyed=!1,this.events=new ge(this),this.debug=new me(this),this._initPlayer(i,t),console.log('Jessibuca version: "3.2.12"')}async destroy(){var e,t;this._destroyed=!0,this.off(),this._clearInitDecoderWorkerTimeout(),this.player&&(await this.player.destroy(),this.player=null),this.events&&(this.events.destroy(),this.events=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=l,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_initPlayer(e,t){this.player=new vt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(L).forEach((e=>{this.player.on(L[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case N:t.isFullResize=!1,t.isResize=!1;break;case H:t.isFullResize=!1,t.isResize=!0;break;case z:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{if(!this.isDestroyed())return e||this._opt.url?void(e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{r(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),r(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{r(e)}))}))):(this.emit(j.error,F.playError),void r("play url is empty"));r("Jessibuca is destroyed")}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{this._opt.url=e,this._opt.playOptions=t;const o=0===e.indexOf("http"),d=o?a:s,c=o||-1!==e.indexOf(".flv")||this.player._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(F.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(F.webglContextLostError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglContextLostError and paused")})).catch((()=>{this.debug.warn("Jessibuca","webglContextLostError and paused error")}))})),this.player.once(F.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1,useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(F.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(F.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(F.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(F.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1,useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(F.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(F.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(F.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(F.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(F.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(F.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(j.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(j.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(j.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})):(this.debug.log("Jessibuca","_play ant waiting decoderWorkerInit"),this._checkInitDecoderWorkerTimeout(),this.player.once(j.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()||(this.debug.log("Jessibuca","_play decoderWorkerInit success and play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})))})))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this.player._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,r){return this.player.video?this.player.video.screenshot(e,t,i,r):""}startRecord(e,t){return new Promise(((i,r)=>{this.player.playing?(this.player.startRecord(e,t),i()):r()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,l);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout()}),1e3*this.player._opt.loadingDecoderWorkerTimeout)}_handleInitDecoderWorkerTimeout(){this.pause().then((()=>{this.debug.log("Jessibuca","init decoder worker timeout and pause play")})).catch((e=>{this.debug.warn("Jessibuca","init decoder worker timeout and pause play error",e)}))}}return o(wt,"ERROR",F),o(wt,"TIMEOUT",{loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout}),window.Jessibuca=wt,wt})); +!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,r=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})),o=(i=r)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l="jessibuca",u='"3.3.12"',h={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1,loadingDecoderWorkerTimeout:10,autoUseSystemFullScreen:!0},p="init",m="initVideo",g="render",f="playAudio",b="initAudio",y="audioCode",v="videoCode",w="wasmError",S="Invalid NAL unit size",E=1,B=2,C=8,R=9,k="init",T="decode",I="audioDecode",x="close",D="updateConfig",j={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",volume:"volume",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},L={load:j.load,timeUpdate:j.timeUpdate,videoInfo:j.videoInfo,audioInfo:j.audioInfo,error:j.error,kBps:j.kBps,log:j.log,start:j.start,timeout:j.timeout,loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout,fullscreen:"fullscreen",webFullscreen:j.webFullscreen,play:j.play,pause:j.pause,mute:j.mute,stats:j.stats,volumechange:j.volumechange,performance:j.performance,recordingTimestamp:j.recordingTimestamp,recordStart:j.recordStart,recordEnd:j.recordEnd,playToRenderTimes:j.playToRenderTimes,volume:j.volume},F={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsConfigureError:"webcodecsConfigureError",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:j.mseSourceBufferFull,mseSourceBufferError:j.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError",webglContextLostError:"webglContextLostError"},V="notConnect",O="open",M="close",U="error",Q={download:"download",base64:"base64",blob:"blob"},W={7:"H264(AVC)",12:"H265(HEVC)"},J=12,P={10:"AAC",7:"ALAW",8:"MULAW"},G=38,N=0,H=1,z=2,Y="webcodecs",X="webgl",q="offscreen",Z="key",K="delta",_='video/mp4; codecs="avc1.64002A"',$="ended",ee="open",te="closed",ie=1e3,re=27,oe=38,se=40,ae="A key frame is required after configure() or flush()",ne="Cannot call 'decode' on a closed codec",Ae="The user aborted a request",de="AbortError",ce="AbortError",le=0,ue=1,he=3,pe=16;class me{constructor(e){this.log=function(t){if(e._opt&&e._opt.debug){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?t-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,r)));e.addEventListener(t,i,r);const o=()=>e.removeEventListener(t,i,r);return this.destroys.push(o),o}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var fe=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=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"]],r=0,o=i.length,s={};r0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),r=t[0].replace("data:","").replace(";base64","");let o=i.length,s=new Uint8Array(o);for(;o--;)s[o]=i.charCodeAt(o);return new File([s],"file",{type:r})}function ve(){return(new Date).getTime()}function we(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Se(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Se(e,i,t[i])})),e.style[t]=i,e}function Ee(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ce(e){let t=0,i=Be();return r=>{t+=r;const o=Be(),s=o-i;s>=1e3&&(e(t/s*1e3),i=o,t=0)}}function Re(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ke(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Te(e){return null==e}function Ie(e){return!0===e||!1===e}function xe(e){return!Te(e)}function De(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,o=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(o=Math.round(o))<10&&(t+="0"),t+=o.toFixed(0)}return t}function je(e){const t=e||window.event;return t.target||t.srcElement}function Le(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Fe(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Ve(e){return!0!==e&&"true"!==e}fe.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 Oe{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function o(){r.off(e,o);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const r=i[e],o=[];if(r&&t)for(let e=0,i=r.length;e=200&&t.status<=299}function Je(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Pe=Ue.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ge="object"!=typeof window||window!==Ue?function(){}:"download"in HTMLAnchorElement.prototype&&!Pe?function(e,t,i){var r=Ue.URL||Ue.webkitURL,o=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",o.download=t,o.rel="noopener","string"==typeof e?(o.href=e,o.origin!==location.origin?We(o.href)?Qe(e,t,i):Je(o,o.target="_blank"):Je(o)):(o.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(o.href)}),4e4),setTimeout((function(){Je(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(We(e))Qe(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Je(r)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof e)return Qe(e,t,i);var o="application/octet-stream"===e.type,s=/constructor/i.test(Ue.HTMLElement)||Ue.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&s||Pe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},n.readAsDataURL(e)}else{var A=Ue.URL||Ue.webkitURL,d=A.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Ne extends Me{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.isContextGlRenderLost=!1,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isContextGlRenderLost=!1,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["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 o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),r}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,r,o,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,r),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,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Y,this._initContext2D()):this._supportOffscreen()?(this.renderType=q,this._bindOffscreen()):(this.renderType=X,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 q:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case X:if(this.isContextGlRenderLost)return;try{this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2])}catch(e){this.player.debug.error("CanvasVideoLoader","render",e),this.isContextGlRenderLost=!0,this.player.emitError(F.webglContextLostError)}break;case Y:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(o[t]||o.png,s);if(r===Q.base64)return a;{const t=ye(a);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}clearView(){switch(this.renderType){case q:(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 X:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Y: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;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&e.useWebFullScreen?t-=G:i-=G);let r=this.$videoElement.width,o=this.$videoElement.height;const s=e.rotate;let a=(t-r)/2,n=(i-o)/2;270!==s&&90!==s||(r=this.$videoElement.height,o=this.$videoElement.width);const A=t/r,d=i/o;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class He extends Me{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const r=this.player._opt;r.useWCS&&r.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),o(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(j.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===r?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===r?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===r?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===r?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===r&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=r,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(o[t]||o.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===Q.base64)return A;{const t=ye(A);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&(this.vwriter.write(e.videoFrame),e.videoFrame.close())}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&i.useWebFullScreen?e-=G:t-=G),this.$videoElement.width=e,this.$videoElement.height=t,270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e);let o=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+r+"deg)",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?He:Ne}}class Ye extends Oe{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._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(j.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=be,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=P[e.encTypeCode],this.audioInfo.encTypeCode=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(j.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ie)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 r=0;r0?this.player.emit(j.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(j.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(j.volumechange,this.player.volume),this.player.emit(j.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(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}getLastVolume(){return this._prevVolume}}class Xe{constructor(e){return new(Xe.getLoaderFactory())(e)}static getLoaderFactory(){return Ye}}class qe extends Oe{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=ve();const r=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,r).then((e=>{const t=e.body.getReader();this.emit(j.streamSuccess);const r=()=>{t.read().then((e=>{let{done:t,value:o}=e;t?i.close():(this.streamRate&&this.streamRate(o.byteLength),i.dispatch(o),r())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(Ae)&&-1===t.indexOf(de)&&e.name!==ce&&(this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))};r()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ze extends Oe{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=V,this.wsUrl=null,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=V,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:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(j.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=O})),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(j.streamEnd),this.socketStatus=M})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(F.websocketError,e),this.player.emit(j.error,F.websocketError),this.socketStatus=U,r.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ve(),this.wsUrl=e,this._createWebSocket()}}class Ke{constructor(e){return new(Ke.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?qe:e===s?Ze:void 0}}var _e=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new r(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var r=new o(e,t);(h=new r(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var r=h.blob;if(!r){if(!i)throw"Recording failed.";h.blob=r=i}if(r&&!t.disableLogs&&console.log(r.type,"->",b(r.size)),e){var o;try{o=l.createObjectURL(r)}catch(e){}"function"==typeof e.call?e.call(s,o):e(o)}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 r=i?i.blob:(h||{}).blob;if(!r)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 o=new FileReader;o.readAsDataURL(r),o.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(r)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new r(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,r=0;r-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 r=t.split(".");t=r[0],i=r[1]}var o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=o,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,r=new EBML.Decoder,o=EBML.tools,s=new FileReader;s.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),r=i.substring(e+7)),-1!==(t=r.indexOf(";"))&&(r=r.substring(0,t)),-1!==(t=r.indexOf(" "))&&(r=r.substring(0,t)),o=parseInt(""+r,10),isNaN(o)&&(r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=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 r;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(r=new f).addTrack(w(e,"audio")[0]):r=new f(w(e,"audio")),e=r;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 o,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){s=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),o&&(o=null),m&&!B()&&(r="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&r.mimeType&&(MediaRecorder.isTypeSupported(r.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType),r.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{o=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){o=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),o.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)});t.ondataavailable(o)}},o.onstart=function(){d.push("started")},o.onpause=function(){d.push("paused")},o.onresume=function(){d.push("resumed")},o.onstop=function(){d.push("stopped")},o.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 (",r.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&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(a(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(o&&!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(r,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 r,o=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),o=[],s=Number((e.length-1)/(r-1));o[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,o.leftchannel=s,o.rightchannel=a,o.numberOfAudioChannels=d,o.desiredSampRate=c,o.sampleRate=b,o.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,o.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?r.connect(p.createMediaStreamDestination()):r.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,o.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var r=new Blob([i],{type:"audio/wav"});t.ondataavailable(r),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 r,o,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)r=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";r=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 r?e=r.captureStream(25):"mozCaptureStream"in r?e=r.mozCaptureStream(25):"webkitCaptureStream"in r&&(e=r.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=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 r=h.frames.length;h.frames.forEach((function(e,i){var o=r-i;t.disableLogs||console.log(o+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,r);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 r=this;i&&o?o.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),r.blob=i,r.blob.forEach&&(r.blob=new Blob([],{type:"video/webm"})),e&&e(r.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:(r=document.createElement("canvas"),o=r.getContext("2d"),r.width=e.width,r.height=e.height,o.drawImage(e,0,0),r),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var r,o;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,o instanceof C&&o.pause()},this.resume=function(){d=!1,o instanceof C?o.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,o){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=r&&r>=0&&r<=1?r:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var r,o,s,a=function(){!v&&s-r<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);r=0,o=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 r(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),o.height=s[0].height*n}else o.width=a.width||360,o.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!r){var i=0,o=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,o,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,o,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var r=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),r.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),r.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(r)}))},this.releaseStreams=function(){i=[],r=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.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(){r=!1;var t=function(){var e;p(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,r,o=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 o;i=new j(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){w(e,"video").forEach((function(e){o.push(e)}))})),o).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()),(r=new C(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){o.blob=t,e(t),o.clearRecordedData()}))},this.pause=function(){r&&r.pause()},this.resume=function(){r&&r.resume()},this.clearRecordedData=function(){r&&(r.clearRecordedData(),r=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),r&&i&&(i.appendStreams(o),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,r,o;function s(){return new ReadableStream({start:function(r){var o=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),r.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(r=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),r.addEventListener("message",(function(e){"READY"===e.data?(r.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!"):r.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(o||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],o=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){r?(r.addEventListener("message",(function(t){null===t.data&&(r.terminate(),r=null,e&&e())})),r.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],o=!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 r=this;r.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{r.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{r.recordRTC.stopRecording((function(i){r.blob=r.recordRTC.getBlob(),r.blob&&r.blob.size?e(i):t("Empty blob.",r.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{r.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{r.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{r.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(r.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(r.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(r.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(r.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(r.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class $e extends Oe{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=_e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(j.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(j.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(j.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(j.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(j.recordEnd);const e=(this.fileName||ve())+"."+(this.fileType||c);Ge(this.recorder.getBlob(),e),this._reset(),this.player.emit(j.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 et{constructor(e){return new(et.getLoaderFactory())(e)}static getLoaderFactory(){return $e}}class tt{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:x}),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 p:e.log("decoderWorker","onmessage:",p),this.player.loaded||this.player.emit(j.load),this.player.emit(j.decoderWorkerInit),this._initWork();break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ve()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case y:e.log("decoderWorker","onmessage:",y,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case m:if(e.log("decoderWorker","onmessage:",m,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(F.webglAlignmentError);this.player.video.initCanvasViewSize();break;case b:e.log("decoderWorker","onmessage:",b,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case g:this.player.handleRender(),this.player.video.render(i),this.player.emit(j.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ve(),this.player.handlePlayToRenderTimes());break;case f:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case w:i.message&&-1!==i.message.indexOf(S)&&this.player.emitError(F.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:k,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const r={type:B,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:T,buffer:e,options:r},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:E,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:T,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:I,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:D,key:e.key,value:e.value})}}class it extends Oe{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,r,o){const s=this.player;let a={ts:i,cts:o,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===B&&(a.isIFrame=r),this.pushBuffer(e,a)):t===B?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,r):t===E&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;e.type===E?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===B&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===E?this.bufferList.push({ts:t.ts,payload:e,type:E}):t.type===B&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:B,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,o=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(o===le){if(r===pe){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,B,0,!0,0)}}}else if(o===ue){let i=e,o=0;const s=r===pe;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,o=n[0];i=Fe(e.slice(8),s),this._doDecode(i,B,t,s,o)}}else if(o===he){const i=r===pe;let o=Fe(e.slice(5),i);this._doDecode(o,B,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends it{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),r=this.player;for(;;){t[3]=0;const e=yield 15,o=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(o){case C:r._opt.hasAudio&&(r.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,E,a));break;case R:if(r._times.demuxStart||(r._times.demuxStart=ve()),r._opt.hasVideo){r.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,B,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return r=>{let o=new Uint8Array(r);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}}class ot extends it{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),o=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case E:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,o)}break;case B:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ve()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,o);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,r,o,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class st{constructor(e){return new(st.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?ot:e===n?rt:void 0}}class at{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 r=Math.min(i,this._current_word_bits_left),o=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,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 nt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[o]=t[e],o++);return new Uint8Array(r.buffer,0,o)}static parseSPS(e){let t=nt._ebsp2rbsp(e),i=new at(t);i.readByte();let r=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let s=nt.getProfileString(r),a=nt.getLevelString(o),n=1,A=420,d=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:nt.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,r=8,o=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(F.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Z:K});this.player.emit(j.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(r)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ae)||-1!==e.toString().indexOf(ne))&&this.player.emitError(F.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===J)return void this.emit(F.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=ve());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}return{codec:i,description:e}}(e.slice(5));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(F.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const ct={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var lt=Object.keys(ct).reduce(((e,t)=>(e[t]=`\n \n ${ct[t]?`${ct[t]}`:""}\n`,e)),{}),ut=(e,t)=>{const{events:{proxy:i}}=e,r=document.createElement("object");r.setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.type="text/html",r.data="about:blank",Se(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,s=e.height;i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===s||(o=e.width,s=e.height,e.emit(j.resize),n())}))})),e.$container.appendChild(r),e.on(j.destroy,(()=>{e.$container.removeChild(r)})),e.on(j.volumechange,(()=>{!function(e){if(0===e)Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","flex"),Se(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Ee(t.$volumePanel,"height")||60,r=Ee(t.$volumeHandle,"height"),o=i-(i-r)*e-r;Se(t.$volumeHandle,"top",`${o}px`),Se(t.$volumeOn,"display","flex"),Se(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(j.loading,(e=>{Se(t.$loading,"display",e?"flex":"none"),Se(t.$poster,"display","none"),e&&Se(t.$playBig,"display","none")}));const a=i=>{let r=Ie(i)?i:e.fullscreen;Se(t.$fullscreenExit,"display",r?"flex":"none"),Se(t.$fullscreen,"display",r?"none":"flex")},n=()=>{Re()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,r=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${r}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{fe.on("change",a),e.events.destroys.push((()=>{fe.off("change",a)}))}catch(e){}e.on(j.webFullscreen,(e=>{a(e),n()})),e.on(j.recording,(()=>{Se(t.$record,"display",e.recording?"none":"flex"),Se(t.$recordStop,"display",e.recording?"flex":"none"),Se(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=De(0))})),e.on(j.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=De(e))})),e.on(j.playing,(e=>{Se(t.$play,"display",e?"none":"flex"),Se(t.$playBig,"display",e?"none":"block"),Se(t.$pause,"display",e?"flex":"none"),Se(t.$screenshot,"display",e?"flex":"none"),Se(t.$record,"display",e?"flex":"none"),Se(t.$qualityMenu,"display",e?"flex":"none"),Se(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ke(""))})),e.on(j.kBps,(e=>{const i=ke(e);t.$speed&&(t.$speed.innerHTML=i)}))};function ht(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}ht('@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;-webkit-user-select:none;user-select:none}.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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKYklEQVRoQ+1Z+3NV1Rld397nXJIbIGBARTQgohGNQZJLEtFSMmpfan10aJ1OZzqd/jOd/g3t9AetD2KLCiigNFUgj/tIQoh1SqBRwVqNYgp53XvP2V9nped0Lpebl/LQmZ4ZZpjkZJ+99voe61tb8C1/5Fu+f/wfwPVm8DIG+vv7H1bVWufcp9baUefcWCqVKi5lo11dXV5NTc06EblPRNoAtABYqapD1tq9zrmelpaWaRHRpaxb6d3LAGSz2d+IyAbn3FljTG+xWEy3t7efW+yHuru7q621t3med7+qPgigGcCdAPIAuowxzyUSiaONjY2Fxa4533uVABwEsA3ARQDHAez1fb9769atn823kKrKyZMnVxUKhdtFJKWq3wWQAnAzgBoAH6vqQWvtH8nAUlmd69uXAcjlci+q6sMA1gL4BMB+Vd2fSCR6K4HYs2eP3bRp0zJjDN/f7Jzjphk2PPkN0YcDACOqekhVO5PJZPZqMvBLAI8BeATAagBnARwRkT97ntdXDmJ4eHj59PT0emPMVufcA9y8iNwBoA6AjQCEAE5dEwDpdPo2EXlQRJ4G8B0A6yImDqjqvnImstnsOlVtFZHvA9gJ4C4AfhnlLAJnABxW1T3V1dWZq8aAqppMJrM+AvE4gB8CuKGUCd/3jzU1NX3JuB8cHNwchuGjBKyq7QCWV4jXawcg/ng6nb7ZWrtTVX8C4CEAtxCEiLzBZAzD8ERNTc1YoVBY6ZxjtXkyYoDvxaETL3ftAfDLvb29t1prufnHohBZQxCqmmVJVNVjQRB8VF1dXeece0hVfxAlcD1wSZe/dgCy2Wy97/sz1topAIWpqambRKTDGPOsqu4AUAvgPICMiBxU1SMzMzMfJJPJG1SVYB+P6n8pE6xCpxebA8PDw4mJiYkqHqLnedPzldxKZfRXqvqliJwtFosjXEBVG0Xkp9wcgMYoLr4EMAjgDRE5PD09PVpTU1MXhiHrP6sY8+G2kjIaJ/HLCyXxiRMnbiwWi7cqk0zkbCqV+nzRfSCbzXay6ojISQDHVq5c+Y+JiYl1zrmnnHNPiwjre5yoFwAwnN6MQfi+v8bzvF0EoaqsYgw7wyokIm86515aCEAul9vinNtujHFBEKTb2tpOLQXApwA+EJHjzrnX8/l8jicbBAE3z4S+P+qs8ZrjERMHABxiOFVVVd2oqruMMT9WVTY2gjgXFYCXAfTNFxa5XI7sMRT57Nu+fXt6KQAosNj2uwB0iki3tXZ1GIbPAOA/hlCybMF/A8gxnBjnQRB86Ps+QbAZMrG3RlqIDfGlCxcu9OzatcsNDg5S4NWqqm+tpbgbb2pqmh4YGHjIOfczfoPvt7S0HF0qgDEROaKqPK1jUeKyzj8jIk1lDJQzsb8ExHrn3E4RmZUmqsqceWV0dLS3oaGhKp/P3yMid3N9Y8xnVKuFQoHgm0WEADwRefGrAPhYRP5CBoIg6BaRWmstw4EMUOhValYEEjNxwDl3yPf9j4MguMkYs9M5x80yPA9fvHhxqKamZo21ltKd+ULBNyoiB/L5fMbzvDuMMVQCy5xzf2ptbe1eKgPUP7MACoVCj+d5q4wxTwCIc2DFPMqUOdEP4HWWWM/zzhWLRXb2LSISOOeGkskkf7YhyitulKLvfRF5XkQOOeduFpEnVLVaRF5taWnpXSqAD6NG1VksFnuXCIDfIog0O7Yx5kgYhp8ZYyipYa39Ynx8fKa2trbBOccDeRbA7QCGVfX3IkLgdSLCUsxcey2VSvVdawD8XtwnWJ2YR2dqa2svnjt3jsrUiwAwJH8OYBMBAPgdN/xNAVCaE2855w4mk8m/UYVGM8RG6iwRoXznxDYLwDm3T0TWiAibZlJEXrseIVTKeJwTrzKcEonEaYIYGhpanc/nycCvRaRRVf8uIn+IBiiG0DcGAMF8QW3IzYVheKitrW2UP0yn048YY34BoDV655UwDF83xqyKc4A5cb0ZiNn4XFXfBfCC53lHtm3bNp7NZjm5dQCgHE+q6lFjzEHn3IqIgerrmcSVCgfdjTe5Kd/3M9PT0zO+76+PbBdK8DOq2kPpEZXRqq+aAx+xjLIPhGHYW9LIWPYoC+brA/O0CLhosnuHGkdV+4wxDC+OpRxlLyQSidGZmZnN1tonnXMJ+kjNzc0EVfGpZKtQC/2LjYzzK0VdJCWeiqrGffN04rm+w3mAQ00imtZo0bxFJpxzRycnJ8fr6uqqwzBU3/enpqamUiKyW0SoYjtTqRTL8JIA0E75K4A9xpjjFFwAqIXIAAGUi7n5Tp2/m4yaG4f9G6OXeUizboeI9J4+ffrT3bt3kyFkMpkHjDEssRKG4StLlRKcxCglqAD3MoRokVhr2fJ3A6CYK3cdFgLAuYGHwpLqAWDcU/9QwB02xuwLw/Dd1tZWgmJ1utcY8wgNBpbelpaWoaUwMCAiH3Hudc4dcc4Ne55H04oDCk+ldKBZaOPx78kAxdowLUsRIQBWn1nLRkTeJtu+7x+n28GJrFAo3Gmttc65kVQqRfCLC6FMJvPbSDWeofCanJz854oVK2hwcd79UVTyKL4Yz4t9ZiJfiALxqIgkVPVRAN8r8Z32s+aLSF8ikaCqTUxOTi6bmpqa7Ojo4N8vDkB/fz/dNYbRuLX2cw4YuVyuyhhzZxiG7SLCmZdT2UYArNOLeWjkciamOfaqqn5ijGmKGOXAE7sdbxtj9pY6gP8di+d2sS+rQl1dXVVr1651Y2NjrqOjg9UDXKSnp2d1IpHgpptVdbuI0DKnilwVzbzzAZm1VTgTR0NSfxAEN/i+z1mA1S2eCRgqByImepubm8cWOp1F39Awod57771ksVjkgH+3qpIpzrtbANy0QGLPAqC85ogYy2P6Tr7vP6iqnDViB5DNjjlBWdHb1tbGPjHns2gA8QpUkhs3blxrjOHGyQJ1zD2RhcIGV2nNS4ytVCrVIyKzJTM2zyIvlt4qq9MsE5W82HIkSwYQh1Qul1sJoF5EtkbOA9mgLGbFKl/3EgATExN9peHZ19e3ng5gpH8uYWIuVzwG8pUAxH+czWbpJqwPw/DeyMjaDoD/Z7MqrVIEMOvMOef2VLofKGMidsU5Qx+iig2CoGf58uXjjY2NE6UsfC0AXIgh1dDQQEeOecEEZ25QL3HKihveggCYY319fbdUYIJ9gobYc6p6prW1lU32f8/XBhCvxAGF10uqui262GNusGpRhvDhnM24fkFE0nMZW2TC8zzmAjs/c4ylukdVOa29H88SVySEyhMqm81yBKSpu4VMiMgOVaX0YCOcva4yxjw/3x0ZmcjlcrxnI5Ps+mtUdYTgwzD8sLwqXTEGSqtUfX09PR/aKIxldvAGOt0A3nHOvRwEwfEdO3ZMz1UbR0ZGlp0/f/4WEam31vL+4by19hQ7dPnNzhUHEG9qYGBgVRAEd0UNj2YYWThjjHmrUChk2tvbKfDmfHjX7Pt+te/7nAnYUKcqhd1VA8Dkrq+vXxcxQdnAewbOAb1BEAwtBCAq16azs3N2j5TalSTFVQMw3+leyd996wH8BxA4v3x6wGifAAAAAElFTkSuQmCC") 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 pt{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,r=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${lt.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&r.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${lt.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${r.audio?`\n
\n ${lt.audio}\n ${lt.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${r.play?`
${lt.play}
${lt.pause}
`:""}\n ${r.screenshot?`
${lt.screenshot}
`:""}\n ${r.record?`
${lt.record}
${lt.recordStop}
`:""}\n ${r.fullscreen?`
${lt.fullscreen}
${lt.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ut(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e;function o(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return we(i-e.y-o/2,0,r-o/2)/(r-o)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=r})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","block"),Se(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=o(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(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||(Se(t.$controls,"display","block"),o())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Se(t.$controls,"display","block"),o()))})),i(e.$container,"mouseout",(()=>{s(),Se(t.$controls,"display","none")}));let r=null;const o=()=>{s(),r=setTimeout((()=>{Se(t.$controls,"display","none")}),5e3)},s=()=>{r&&(clearTimeout(r),r=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function o(e,t){r[e]?r[e].push(t):r[e]=[t]}o(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),o(oe,(()=>{e.volume+=.05})),o(se,(()=>{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=r[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Le(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Le(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Le(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Le(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Le(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,o=e.video.$videoElement.width/e.video.$videoElement.height;if(r>o){const r=(t-i*o)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/o)/2;e.$container.style.padding=`${r}px 0`}}toggleBar(e){this.$controls&&(Ie(e)||(e="none"===Ee(this.$controls,"display",!1)),Se(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Ee(this.$controls,"display",!1)),e}}ht(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class mt{static init(){mt.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 mt.types)mt.types.hasOwnProperty(e)&&(mt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mt.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,r=Array.prototype.slice.call(arguments,1),o=r.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 mt.box(mt.types.trak,mt.tkhd(e),mt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,o=e.presentHeight;return mt.box(mt.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,r>>>8&255,255&r,0,0,o>>>8&255,255&o,0,0]))}static mdia(e){return mt.box(mt.types.mdia,mt.mdhd(e),mt.hdlr(e),mt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return mt.box(mt.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?mt.constants.HDLR_AUDIO:mt.constants.HDLR_VIDEO,mt.box(mt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mt.box(mt.types.smhd,mt.constants.SMHD):mt.box(mt.types.vmhd,mt.constants.VMHD),mt.box(mt.types.minf,t,mt.dinf(),mt.stbl(e))}static dinf(){return mt.box(mt.types.dinf,mt.box(mt.types.dref,mt.constants.DREF))}static stbl(e){return mt.box(mt.types.stbl,mt.stsd(e),mt.box(mt.types.stts,mt.constants.STTS),mt.box(mt.types.stsc,mt.constants.STSC),mt.box(mt.types.stsz,mt.constants.STSZ),mt.box(mt.types.stco,mt.constants.STCO))}static stsd(e){return"audio"===e.type?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.mp4a(e)):"avc"===e.videoType?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.avc1(e)):mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=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 mt.box(mt.types.mp4a,r,mt.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=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 mt.box(mt.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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,r>>>8&255,255&r,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 mt.box(mt.types.avc1,o,mt.box(mt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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,r>>>8&255,255&r,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 mt.box(mt.types.hvc1,o,mt.box(mt.types.hvcC,t))}static mvex(e){return mt.box(mt.types.mvex,mt.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 mt.box(mt.types.trex,i)}static moof(e,t){return mt.box(mt.types.moof,mt.mfhd(e.sequenceNumber),mt.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 mt.box(mt.types.mfhd,t)}static traf(e,t){let i=e.id,r=mt.box(mt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=mt.box(mt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mt.sdtp(e),a=mt.trun(e,s.byteLength+16+16+8+16+8+8);return mt.box(mt.types.traf,r,o,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,mt.box(mt.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 r=e.duration,o=e.size,s=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),mt.box(mt.types.trun,i)}static mdat(e){return mt.box(mt.types.mdat,e)}}mt.init();class gt extends Oe{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(j.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(j.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===ee}get isStateClosed(){return this.state===te}get isStateEnded(){return this.state===$}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,r){const o=this.player;if(o)if(this.hasInit){if(i&&0===e[1]){let t=At(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const o=t-this.firstRenderTime;this._decodeVideo(e,o,i,r)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===J)return void this.emit(F.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=ve()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,r){let o=e.slice(5),s={};s=At(o);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:o,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=mt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,r){const o=this.player;let s=e.slice(5),a=s.byteLength;const n=o.video.$videoElement,A=o._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(mt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=mt.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&&o.demux.delay||0}),o._times.videoStart||(o._times.videoStart=ve(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(_),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(j.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(F.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(F.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(j.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(F.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(F.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(j.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ft=()=>"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,bt=()=>"wakeLock"in navigator;class yt{constructor(e){if(this.player=e,this.enabled=!1,bt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ft()?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 r=document.createElement("source");r.src=i,r.type=`video/${t}`,e.appendChild(r)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(bt())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(ft())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;bt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ft()?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 vt extends Oe{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},h,t),this.debug=new me(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(Re()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),this._opt.autoUseSystemFullScreen&&(fe.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ve(fe.isEnabled)&&Ve(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0)),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(_)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new ge(this),this.video=new ze(this),this._opt.hasAudio&&(this.audio=new Xe(this)),this.recorder=new et(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new tt(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new dt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new gt(this),this.loaded=!0),this.control=new pt(this),Re()&&(this.keepScreenOn=new yt(this)),(e=>{try{const t=t=>{je(t)===e.$container&&(e.emit(L.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};fe.on("change",t),e.events.destroys.push((()=>{fe.off("change",t)}))}catch(e){}if(e.on(j.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(j.play,(()=>{e.loading=!1})),e.on(j.fullscreen,(t=>{if(t)try{fe.request(e.$container).then((()=>{})).catch((t=>{Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{fe.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Re()&&e.on(j.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(L.fullscreen,e.fullscreen)})),e.on(j.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[j.timeUpdate],i=[j.stats,j.playToRenderTimes,j.audioInfo,j.videoInfo];Object.keys(j).forEach((r=>{e.on(j[r],(o=>{t.includes(r)||(i.includes(r)&&(o=JSON.stringify(o)),e.debug.log("player events",j[r],o))}))})),Object.keys(F).forEach((t=>{e.on(F[t],(i=>{e.debug.log("player event error",F[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=je(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(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()))})),r(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this.debug.log("Player","init and version is",u),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");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Re()&&this._opt.useWebFullScreen?(this.emit(j.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(j.fullscreen,e)}get fullscreen(){return fe.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(j.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(j.playing,e),this.emit(j.volumechange,this.volume),e?this.emit(j.play):this.emit(j.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(j.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(j.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ke(this)),this.audio||this._opt.hasAudio&&(this.audio=new Xe(this)),this.demux||(this.demux=new st(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new gt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new tt(this),this.debug.log("Player","waiting decoderWorker init"),this.once(j.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r();this.loading=!0,this.playing=!1,this._times.playInitStart=ve(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=ve(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(F.webcodecsH265NotSupport,(()=>{this.emit(F.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(F.mediaSourceH265NotSupport,(()=>{this.emit(F.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.mediaSourceH265NotSupport)})),this.mseDecoder.once(F.mediaSourceFull,(()=>{this.emitError(F.mediaSourceFull)})),this.mseDecoder.once(F.mediaSourceAppendBufferError,(()=>{this.emitError(F.mediaSourceAppendBufferError)})),this.mseDecoder.once(F.mediaSourceBufferListLarge,(()=>{this.emitError(F.mediaSourceBufferListLarge)})),this.mseDecoder.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(F.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(F.fetchError,(e=>{this.emitError(F.fetchError,e)})),this.stream.once(F.websocketError,(e=>{this.emitError(F.websocketError,e)})),this.stream.once(j.streamEnd,(e=>{this.emitError(j.streamEnd,e)})),this.stream.once(j.streamSuccess,(()=>{i(),this._times.streamResponse=ve(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{r(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){if(this.audio){const t=this.audio.getLastVolume();this.audio.mute(e),this._lastVolume=e?0:t||.5}}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(j.timeout,j.delayTimeout),this.emit(j.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(j.timeout,j.loadingTimeout),this.emit(j.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(j.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ve()),xe(e.ts)&&(this._stats.ts=e.ts),xe(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=ve();t-this._startBpsTime<1e3||(this.emit(j.stats,this._stats),this.emit(j.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(j.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(j.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wt extends Oe{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var r,o,s;i.classList.add("jessibuca-container"),r=i,o=l,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),r&&(r.dataset?r.dataset[o]=s:r.setAttribute("data-"+o,s)),delete t.container,t.forceNoOffscreen=!0,Re()&&(t.controlAutoHide=!1),xe(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),xe(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.initDecoderWorkerTimeout=null,this._destroyed=!1,this.events=new ge(this),this.debug=new me(this),this._initPlayer(i,t),console.log('Jessibuca version: "3.3.12"')}async destroy(){var e,t;this._destroyed=!0,this.off(),this._clearInitDecoderWorkerTimeout(),this.player&&(await this.player.destroy(),this.player=null),this.events&&(this.events.destroy(),this.events=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=l,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_initPlayer(e,t){this.player=new vt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(L).forEach((e=>{this.player.on(L[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case N:t.isFullResize=!1,t.isResize=!1;break;case H:t.isFullResize=!1,t.isResize=!0;break;case z:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{if(!this.isDestroyed())return e||this._opt.url?void(e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{r(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),r(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{r(e)}))}))):(this.emit(j.error,F.playError),void r("play url is empty"));r("Jessibuca is destroyed")}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{this._opt.url=e,this._opt.playOptions=t;const o=0===e.indexOf("http"),d=o?a:s,c=o||-1!==e.indexOf(".flv")||this.player._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(F.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(F.webglContextLostError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglContextLostError and paused")})).catch((()=>{this.debug.warn("Jessibuca","webglContextLostError and paused error")}))})),this.player.once(F.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1,useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(F.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(F.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(F.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(F.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1,useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(F.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(F.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(F.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(F.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(F.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(F.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(j.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(j.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(j.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})):(this.debug.log("Jessibuca","_play ant waiting decoderWorkerInit"),this._checkInitDecoderWorkerTimeout(),this.player.once(j.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()||(this.debug.log("Jessibuca","_play decoderWorkerInit success and play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})))})))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this.player._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,r){return this.player.video?this.player.video.screenshot(e,t,i,r):""}startRecord(e,t){return new Promise(((i,r)=>{this.player.playing?(this.player.startRecord(e,t),i()):r()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,l);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout()}),1e3*this.player._opt.loadingDecoderWorkerTimeout)}_handleInitDecoderWorkerTimeout(){this.pause().then((()=>{this.debug.log("Jessibuca","init decoder worker timeout and pause play")})).catch((e=>{this.debug.warn("Jessibuca","init decoder worker timeout and pause play error",e)}))}}return o(wt,"ERROR",F),o(wt,"TIMEOUT",{loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout}),window.Jessibuca=wt,wt})); diff --git a/package.json b/package.json index 032ca9da..82c18552 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jessibuca", - "version": "3.2.12", + "version": "3.3.12", "scripts": { "build": "npx cross-env NODE_ENV=production rollup -c", "build:wasm": "python wasm/make.py --wasm && npm run build && npm run build:demo", @@ -28,14 +28,13 @@ "babel-eslint": "^10.1.0", "cross-env": "^7.0.3", "cssnano": "^4.1.10", - "node-sass": "9.0.0", + "less": "4.2.0", "rollup": "^2.39.0", "postcss": "^8.1.6", "postcss-base64": "0.7.1", "rollup-plugin-babel": "^4.4.0", "rollup-plugin-babel-minify": "^10.0.0", "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-eslint": "^7.0.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-postcss": "^4.0.0", "rollup-plugin-replace": "^2.2.0", diff --git a/src/control/index.js b/src/control/index.js index 692bd5b4..d7a4fbd7 100644 --- a/src/control/index.js +++ b/src/control/index.js @@ -2,7 +2,7 @@ import template from "./template"; import observer from './observer'; import property from './property'; import events from './events'; -import './style.scss' +import './style.less' import hotkey from "./hotkey"; import {getStyle, isBoolean, removeElement, setStyle} from "../utils"; diff --git a/src/control/style.scss b/src/control/style.less similarity index 100% rename from src/control/style.scss rename to src/control/style.less diff --git a/src/player/index.js b/src/player/index.js index db98f372..7f0d05f0 100644 --- a/src/player/index.js +++ b/src/player/index.js @@ -23,7 +23,7 @@ import Emitter from "../utils/emitter"; import Demux from "../demux"; import WebcodecsDecoder from "../decoder/webcodecs"; import Control from "../control"; -import './style.scss' +import './style.less' import observer from "./observer"; import MseDecoder from "../decoder/mediaSource"; import NoSleep from "../utils/noSleep"; diff --git a/src/player/style.scss b/src/player/style.less similarity index 100% rename from src/player/style.scss rename to src/player/style.less