You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

892 lines
44 KiB

// universal module definition
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.Decoder = factory();
}
}(this, function () {
var global;
function initglobal(){
global = this;
if (!global){
if (typeof window != "undefined"){
global = window;
}else if (typeof self != "undefined"){
global = self;
};
};
};
initglobal();
function error(message) {
console.error(message);
console.trace();
};
function assert(condition, message) {
if (!condition) {
error(message);
};
};
var getModule = function(par_broadwayOnHeadersDecoded, par_broadwayOnPictureDecoded){
/*var ModuleX = {
'print': function(text) { console.log('stdout: ' + text); },
'printErr': function(text) { console.log('stderr: ' + text); }
};*/
/*
The reason why this is all packed into one file is that this file can also function as worker.
you can integrate the file into your build system and provide the original file to be loaded into a worker.
*/
//var Module = (function(){
var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof null==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=(null)("fs");if(!nodePath)nodePath=(null)("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["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,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{throw new Error("not compiled for this environment")}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"debugger":(function(){debugger})};var functionPointers=new Array(0);var GLOBAL_BASE=1024;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||52428800;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"]}else{if(typeof WebAssembly==="object"&&typeof WebAssembly.Memory==="function"){Module["wasmMemory"]=new WebAssembly.Memory({"initial":TOTAL_MEMORY/WASM_PAGE_SIZE,"maximum":TOTAL_MEMORY/WASM_PAGE_SIZE});buffer=Module["wasmMemory"].buffer}else{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module["buffer"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;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 ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){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 addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}function integrateWasmJS(){var wasmTextFile="avc.wast";var wasmBinaryFile="avc.wasm";var asmjsCodeFile="avc.temp.asm.js";if(typeof Module["locateFile"]==="function"){if(!isDataURI(wasmTextFile)){wasmTextFile=Module["locateFile"](wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=Module["locateFile"](wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=Module["locateFile"](asmjsCodeFile)}}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength<oldBuffer.byteLength){Module["printErr"]("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here")}var oldView=new Int8Array(oldBuffer);var newView=new Int8Array(newBuffer);newView.set(oldView);updateGlobalBuffer(newBuffer);updateGlobalBufferViews()}function fixImports(imports){return imports}function getBinary(){try{if(Module["wasmBinary"]){return new Uint8Array(Module["wasmBinary"])}if(Module["readBinary"]){return Module["readBinary"](wasmBinaryFile)}else{throw"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module["wasmBinary"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){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()}))}return new Promise((function(resolve,reject){resolve(getBinary())}))}function doNativeWasm(global,env,providedBuffer){if(typeof WebAssembly!=="object"){Module["printErr"]("no native wasm support detected");return false}if(!(Module["wasmMemory"]instanceof WebAssembly.Memory)){Module["printErr"]("no native wasm Memory in use");return false}env["memory"]=Module["wasmMemory"];info["global"]={"NaN":NaN,"Infinity":Infinity};info["global.Math"]=Math;info["env"]=env;function receiveInstance(instance,module){exports=instance.exports;if(exports.memory)mergeMemory(exports.memory);Module["asm"]=exports;Module["usingWasm"]=true;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){Module["printErr"]("Module.instantiateWasm callback failed with error: "+e);return false}}function receiveInstantiatedSource(output){receiveInstance(output["instance"],output["module"])}function instantiateArrayBuffer(receiver){getBinaryPromise().then((function(binary){return WebAssembly.instantiate(binary,info)})).then(receiver).catch((function(reason){Module["printErr"]("failed to asynchronously prepare wasm: "+reason);abort(reason)}))}if(!Module["wasmBinary"]&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){WebAssembly.instantiateStreaming(fetch(wasmBinaryFile,{credentials:"same-origin"}),info).then(receiveInstantiatedSource).catch((function(reason){Module["printErr"]("wasm streaming compile failed: "+reason);Module["printErr"]("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)}))}else{instantiateArrayBuffer(receiveInstantiatedSource)}return{}}Module["asmPreload"]=Module["asm"];var asmjsReallocBuffer=Module["reallocBuffer"];var wasmReallocBuffer=(function(size){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;size=alignUp(size,PAGE_MULTIPLE);var old=Module["buffer"];var oldSize=old.byteLength;if(Module["usingWasm"]){try{var result=Module["wasmMemory"].grow((size-oldSize)/wasmPageSize);if(result!==(-1|0)){return Module["buffer"]=Module["wasmMemory"].buffer}else{return null}}catch(e){return null}}});Module["reallocBuffer"]=(function(size){if(finalMethod==="asmjs"){return asmjsReallocBuffer(size)}else{return wasmReallocBuffer(size)}});var finalMethod="";Module["asm"]=(function(global,env,providedBuffer){env=fixImports(env);if(!env["table"]){var TABLE_SIZE=Module["wasmTableSize"];if(TABLE_SIZE===undefined)TABLE_SIZE=1024;var MAX_TABLE_SIZE=Module["wasmMaxTableSize"];if(typeof WebAssembly==="object"&&typeof WebAssembly.Table==="function"){if(MAX_TABLE_SIZE!==undefined){env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,"maximum":MAX_TABLE_SIZE,"element":"anyfunc"})}else{env["table"]=new WebAssembly.Table({"initial":TABLE_SIZE,element:"anyfunc"})}}else{env["table"]=new Array(TABLE_SIZE)}Module["wasmTable"]=env["table"]}if(!env["memoryBase"]){env["memoryBase"]=Module["STATIC_BASE"]}if(!env["tableBase"]){env["tableBase"]=0}var exports;exports=doNativeWasm(global,env,providedBuffer);assert(exports,"no binaryen method succeeded.");return exports})}integrateWasmJS();STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+9888;__ATINIT__.push();var STATIC_BUMP=9888;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;STATICTOP+=16;var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j<len;j++){___syscall146.printChar(stream,HEAPU8[ptr+j])}ret+=len}return ret}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _broadwayOnHeadersDecoded(){par_broadwayOnHeadersDecoded()}Module["_broadwayOnHeadersDecoded"]=_broadwayOnHeadersDecoded;function _broadwayOnPictureDecoded($buffer,width,height){par_broadwayOnPictureDecoded($buffer,width,height)}Module["_broadwayOnPictureDecoded"]=_broadwayOnPictureDecoded;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;Module["wasmTableSize"]=10;Module["wasmMaxTableSize"]=10;Module.asmGlobalArg={};Module.asmLibraryArg={"abort":abort,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall146":___syscall146,"___syscall54":___syscall54,"___syscall6":___syscall6,"_broadwayOnHeadersDecoded":_broadwayOnHeadersDecoded,"_broadwayOnPictureDecoded":_broadwayOnPictureDecoded,"_emscripten_memcpy_big":_emscripten_memcpy_big,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"STACKTOP":STACKTOP};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var _broadwayCreateStream=Module["_broadwayCreateStream"]=(function(){return Module["asm"]["_broadwayCreateStream"].apply(null,arguments)});var _broadwayExit=Module["_broadwayExit"]=(function(){return Module["asm"]["_broadwayExit"].apply(null,arguments)});var _broadwayGetMajorVersion=Module["_broadwayGetMajorVersion"]=(function(){return Module["asm"]["_broadwayGetMajorVersion"].apply(null,arguments)});var _broadwayGetMinorVersion=Module["_broadwayGetMinorVersion"]=(function(){return Module["asm"]["_broadwayGetMinorVersion"].apply(null,arguments)});var _broadwayInit=Module["_broadwayInit"]=(function(){return Module["asm"]["_broadwayInit"].apply(null,arguments)});var _broadwayPlayStream=Module["_broadwayPlayStream"]=(function(){return Module["asm"]["_broadwayPlayStream"].apply(null,arguments)});Module["asm"]=asm;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run()
// return Module;
//})();
var resultModule;
if (typeof global !== "undefined"){
if (global.Module){
resultModule = global.Module;
};
};
if (typeof Module != "undefined"){
resultModule = Module;
};
resultModule._broadwayOnHeadersDecoded = par_broadwayOnHeadersDecoded;
resultModule._broadwayOnPictureDecoded = par_broadwayOnPictureDecoded;
var moduleIsReady = false;
var cbFun;
var moduleReady = function(){
moduleIsReady = true;
if (cbFun){
cbFun(resultModule);
}
};
resultModule.onRuntimeInitialized = function(){
moduleReady(resultModule);
};
return function(callback){
if (moduleIsReady){
callback(resultModule);
}else{
cbFun = callback;
};
};
};
return (function(){
"use strict";
var nowValue = function(){
return (new Date()).getTime();
};
if (typeof performance != "undefined"){
if (performance.now){
nowValue = function(){
return performance.now();
};
};
};
var Decoder = function(parOptions){
this.options = parOptions || {};
this.now = nowValue;
var asmInstance;
var fakeWindow = {
};
var toU8Array;
var toU32Array;
var onPicFun = function ($buffer, width, height) {
var buffer = this.pictureBuffers[$buffer];
if (!buffer) {
buffer = this.pictureBuffers[$buffer] = toU8Array($buffer, (width * height * 3) / 2);
};
var infos;
var doInfo = false;
if (this.infoAr.length){
doInfo = true;
infos = this.infoAr;
};
this.infoAr = [];
if (this.options.rgb){
if (!asmInstance){
asmInstance = getAsm(width, height);
};
asmInstance.inp.set(buffer);
asmInstance.doit();
var copyU8 = new Uint8Array(asmInstance.outSize);
copyU8.set( asmInstance.out );
if (doInfo){
infos[0].finishDecoding = nowValue();
};
this.onPictureDecoded(copyU8, width, height, infos);
return;
};
if (doInfo){
infos[0].finishDecoding = nowValue();
};
this.onPictureDecoded(buffer, width, height, infos);
}.bind(this);
var ignore = false;
if (this.options.sliceMode){
onPicFun = function ($buffer, width, height, $sliceInfo) {
if (ignore){
return;
};
var buffer = this.pictureBuffers[$buffer];
if (!buffer) {
buffer = this.pictureBuffers[$buffer] = toU8Array($buffer, (width * height * 3) / 2);
};
var sliceInfo = this.pictureBuffers[$sliceInfo];
if (!sliceInfo) {
sliceInfo = this.pictureBuffers[$sliceInfo] = toU32Array($sliceInfo, 18);
};
var infos;
var doInfo = false;
if (this.infoAr.length){
doInfo = true;
infos = this.infoAr;
};
this.infoAr = [];
/*if (this.options.rgb){
no rgb in slice mode
};*/
infos[0].finishDecoding = nowValue();
var sliceInfoAr = [];
for (var i = 0; i < 20; ++i){
sliceInfoAr.push(sliceInfo[i]);
};
infos[0].sliceInfoAr = sliceInfoAr;
this.onPictureDecoded(buffer, width, height, infos);
}.bind(this);
};
var ModuleCallback = getModule.apply(fakeWindow, [function () {
}, onPicFun]);
var MAX_STREAM_BUFFER_LENGTH = 1024 * 1024;
var instance = this;
this.onPictureDecoded = function (buffer, width, height, infos) {
};
this.onDecoderReady = function(){};
var bufferedCalls = [];
this.decode = function decode(typedAr, parInfo, copyDoneFun) {
bufferedCalls.push([typedAr, parInfo, copyDoneFun]);
};
ModuleCallback(function(Module){
var HEAP8 = Module.HEAP8;
var HEAPU8 = Module.HEAPU8;
var HEAP16 = Module.HEAP16;
var HEAP32 = Module.HEAP32;
// from old constructor
Module._broadwayInit();
/**
* Creates a typed array from a HEAP8 pointer.
*/
toU8Array = function(ptr, length) {
return HEAPU8.subarray(ptr, ptr + length);
};
toU32Array = function(ptr, length) {
//var tmp = HEAPU8.subarray(ptr, ptr + (length * 4));
return new Uint32Array(HEAPU8.buffer, ptr, length);
};
instance.streamBuffer = toU8Array(Module._broadwayCreateStream(MAX_STREAM_BUFFER_LENGTH), MAX_STREAM_BUFFER_LENGTH);
instance.pictureBuffers = {};
// collect extra infos that are provided with the nal units
instance.infoAr = [];
/**
* Decodes a stream buffer. This may be one single (unframed) NAL unit without the
* start code, or a sequence of NAL units with framing start code prefixes. This
* function overwrites stream buffer allocated by the codec with the supplied buffer.
*/
var sliceNum = 0;
if (instance.options.sliceMode){
sliceNum = instance.options.sliceNum;
instance.decode = function decode(typedAr, parInfo, copyDoneFun) {
instance.infoAr.push(parInfo);
parInfo.startDecoding = nowValue();
var nals = parInfo.nals;
var i;
if (!nals){
nals = [];
parInfo.nals = nals;
var l = typedAr.length;
var foundSomething = false;
var lastFound = 0;
var lastStart = 0;
for (i = 0; i < l; ++i){
if (typedAr[i] === 1){
if (
typedAr[i - 1] === 0 &&
typedAr[i - 2] === 0
){
var startPos = i - 2;
if (typedAr[i - 3] === 0){
startPos = i - 3;
};
// its a nal;
if (foundSomething){
nals.push({
offset: lastFound,
end: startPos,
type: typedAr[lastStart] & 31
});
};
lastFound = startPos;
lastStart = startPos + 3;
if (typedAr[i - 3] === 0){
lastStart = startPos + 4;
};
foundSomething = true;
};
};
};
if (foundSomething){
nals.push({
offset: lastFound,
end: i,
type: typedAr[lastStart] & 31
});
};
};
var currentSlice = 0;
var playAr;
var offset = 0;
for (i = 0; i < nals.length; ++i){
if (nals[i].type === 1 || nals[i].type === 5){
if (currentSlice === sliceNum){
playAr = typedAr.subarray(nals[i].offset, nals[i].end);
instance.streamBuffer[offset] = 0;
offset += 1;
instance.streamBuffer.set(playAr, offset);
offset += playAr.length;
};
currentSlice += 1;
}else{
playAr = typedAr.subarray(nals[i].offset, nals[i].end);
instance.streamBuffer[offset] = 0;
offset += 1;
instance.streamBuffer.set(playAr, offset);
offset += playAr.length;
Module._broadwayPlayStream(offset);
offset = 0;
};
};
copyDoneFun();
Module._broadwayPlayStream(offset);
};
}else{
instance.decode = function decode(typedAr, parInfo) {
// console.info("Decoding: " + buffer.length);
// collect infos
if (parInfo){
instance.infoAr.push(parInfo);
parInfo.startDecoding = nowValue();
};
instance.streamBuffer.set(typedAr);
Module._broadwayPlayStream(typedAr.length);
};
};
if (bufferedCalls.length){
var bi = 0;
for (bi = 0; bi < bufferedCalls.length; ++bi){
instance.decode(bufferedCalls[bi][0], bufferedCalls[bi][1], bufferedCalls[bi][2]);
};
bufferedCalls = [];
};
instance.onDecoderReady(instance);
});
};
Decoder.prototype = {
};
/*
asm.js implementation of a yuv to rgb convertor
provided by @soliton4
based on
http://www.wordsaretoys.com/2013/10/18/making-yuv-conversion-a-little-faster/
*/
// factory to create asm.js yuv -> rgb convertor for a given resolution
var asmInstances = {};
var getAsm = function(parWidth, parHeight){
var idStr = "" + parWidth + "x" + parHeight;
if (asmInstances[idStr]){
return asmInstances[idStr];
};
var lumaSize = parWidth * parHeight;
var chromaSize = (lumaSize|0) >> 2;
var inpSize = lumaSize + chromaSize + chromaSize;
var outSize = parWidth * parHeight * 4;
var cacheSize = Math.pow(2, 24) * 4;
var size = inpSize + outSize + cacheSize;
var chunkSize = Math.pow(2, 24);
var heapSize = chunkSize;
while (heapSize < size){
heapSize += chunkSize;
};
var heap = new ArrayBuffer(heapSize);
var res = asmFactory(global, {}, heap);
res.init(parWidth, parHeight);
asmInstances[idStr] = res;
res.heap = heap;
res.out = new Uint8Array(heap, 0, outSize);
res.inp = new Uint8Array(heap, outSize, inpSize);
res.outSize = outSize;
return res;
};
function asmFactory(stdlib, foreign, heap) {
"use asm";
var imul = stdlib.Math.imul;
var min = stdlib.Math.min;
var max = stdlib.Math.max;
var pow = stdlib.Math.pow;
var out = new stdlib.Uint8Array(heap);
var out32 = new stdlib.Uint32Array(heap);
var inp = new stdlib.Uint8Array(heap);
var mem = new stdlib.Uint8Array(heap);
var mem32 = new stdlib.Uint32Array(heap);
// for double algo
/*var vt = 1.370705;
var gt = 0.698001;
var gt2 = 0.337633;
var bt = 1.732446;*/
var width = 0;
var height = 0;
var lumaSize = 0;
var chromaSize = 0;
var inpSize = 0;
var outSize = 0;
var inpStart = 0;
var outStart = 0;
var widthFour = 0;
var cacheStart = 0;
function init(parWidth, parHeight){
parWidth = parWidth|0;
parHeight = parHeight|0;
var i = 0;
var s = 0;
width = parWidth;
widthFour = imul(parWidth, 4)|0;
height = parHeight;
lumaSize = imul(width|0, height|0)|0;
chromaSize = (lumaSize|0) >> 2;
outSize = imul(imul(width, height)|0, 4)|0;
inpSize = ((lumaSize + chromaSize)|0 + chromaSize)|0;
outStart = 0;
inpStart = (outStart + outSize)|0;
cacheStart = (inpStart + inpSize)|0;
// initializing memory (to be on the safe side)
s = ~~(+pow(+2, +24));
s = imul(s, 4)|0;
for (i = 0|0; ((i|0) < (s|0))|0; i = (i + 4)|0){
mem32[((cacheStart + i)|0) >> 2] = 0;
};
};
function doit(){
var ystart = 0;
var ustart = 0;
var vstart = 0;
var y = 0;
var yn = 0;
var u = 0;
var v = 0;
var o = 0;
var line = 0;
var col = 0;
var usave = 0;
var vsave = 0;
var ostart = 0;
var cacheAdr = 0;
ostart = outStart|0;
ystart = inpStart|0;
ustart = (ystart + lumaSize|0)|0;
vstart = (ustart + chromaSize)|0;
for (line = 0; (line|0) < (height|0); line = (line + 2)|0){
usave = ustart;
vsave = vstart;
for (col = 0; (col|0) < (width|0); col = (col + 2)|0){
y = inp[ystart >> 0]|0;
yn = inp[((ystart + width)|0) >> 0]|0;
u = inp[ustart >> 0]|0;
v = inp[vstart >> 0]|0;
cacheAdr = (((((y << 16)|0) + ((u << 8)|0))|0) + v)|0;
o = mem32[((cacheStart + cacheAdr)|0) >> 2]|0;
if (o){}else{
o = yuv2rgbcalc(y,u,v)|0;
mem32[((cacheStart + cacheAdr)|0) >> 2] = o|0;
};
mem32[ostart >> 2] = o;
cacheAdr = (((((yn << 16)|0) + ((u << 8)|0))|0) + v)|0;
o = mem32[((cacheStart + cacheAdr)|0) >> 2]|0;
if (o){}else{
o = yuv2rgbcalc(yn,u,v)|0;
mem32[((cacheStart + cacheAdr)|0) >> 2] = o|0;
};
mem32[((ostart + widthFour)|0) >> 2] = o;
//yuv2rgb5(y, u, v, ostart);
//yuv2rgb5(yn, u, v, (ostart + widthFour)|0);
ostart = (ostart + 4)|0;
// next step only for y. u and v stay the same
ystart = (ystart + 1)|0;
y = inp[ystart >> 0]|0;
yn = inp[((ystart + width)|0) >> 0]|0;
//yuv2rgb5(y, u, v, ostart);
cacheAdr = (((((y << 16)|0) + ((u << 8)|0))|0) + v)|0;
o = mem32[((cacheStart + cacheAdr)|0) >> 2]|0;
if (o){}else{
o = yuv2rgbcalc(y,u,v)|0;
mem32[((cacheStart + cacheAdr)|0) >> 2] = o|0;
};
mem32[ostart >> 2] = o;
//yuv2rgb5(yn, u, v, (ostart + widthFour)|0);
cacheAdr = (((((yn << 16)|0) + ((u << 8)|0))|0) + v)|0;
o = mem32[((cacheStart + cacheAdr)|0) >> 2]|0;
if (o){}else{
o = yuv2rgbcalc(yn,u,v)|0;
mem32[((cacheStart + cacheAdr)|0) >> 2] = o|0;
};
mem32[((ostart + widthFour)|0) >> 2] = o;
ostart = (ostart + 4)|0;
//all positions inc 1
ystart = (ystart + 1)|0;
ustart = (ustart + 1)|0;
vstart = (vstart + 1)|0;
};
ostart = (ostart + widthFour)|0;
ystart = (ystart + width)|0;
};
};
function yuv2rgbcalc(y, u, v){
y = y|0;
u = u|0;
v = v|0;
var r = 0;
var g = 0;
var b = 0;
var o = 0;
var a0 = 0;
var a1 = 0;
var a2 = 0;
var a3 = 0;
var a4 = 0;
a0 = imul(1192, (y - 16)|0)|0;
a1 = imul(1634, (v - 128)|0)|0;
a2 = imul(832, (v - 128)|0)|0;
a3 = imul(400, (u - 128)|0)|0;
a4 = imul(2066, (u - 128)|0)|0;
r = (((a0 + a1)|0) >> 10)|0;
g = (((((a0 - a2)|0) - a3)|0) >> 10)|0;
b = (((a0 + a4)|0) >> 10)|0;
if ((((r & 255)|0) != (r|0))|0){
r = min(255, max(0, r|0)|0)|0;
};
if ((((g & 255)|0) != (g|0))|0){
g = min(255, max(0, g|0)|0)|0;
};
if ((((b & 255)|0) != (b|0))|0){
b = min(255, max(0, b|0)|0)|0;
};
o = 255;
o = (o << 8)|0;
o = (o + b)|0;
o = (o << 8)|0;
o = (o + g)|0;
o = (o << 8)|0;
o = (o + r)|0;
return o|0;
};
return {
init: init,
doit: doit
};
};
/*
potential worker initialization
*/
if (typeof self != "undefined"){
var isWorker = false;
var decoder;
var reuseMemory = false;
var sliceMode = false;
var sliceNum = 0;
var sliceCnt = 0;
var lastSliceNum = 0;
var sliceInfoAr;
var lastBuf;
var awaiting = 0;
var pile = [];
var startDecoding;
var finishDecoding;
var timeDecoding;
var memAr = [];
var getMem = function(length){
if (memAr.length){
var u = memAr.shift();
while (u && u.byteLength !== length){
u = memAr.shift();
};
if (u){
return u;
};
};
return new ArrayBuffer(length);
};
var copySlice = function(source, target, infoAr, width, height){
var length = width * height;
var length4 = length / 4
var plane2 = length;
var plane3 = length + length4;
var copy16 = function(parBegin, parEnd){
var i = 0;
for (i = 0; i < 16; ++i){
var begin = parBegin + (width * i);
var end = parEnd + (width * i)
target.set(source.subarray(begin, end), begin);
};
};
var copy8 = function(parBegin, parEnd){
var i = 0;
for (i = 0; i < 8; ++i){
var begin = parBegin + ((width / 2) * i);
var end = parEnd + ((width / 2) * i)
target.set(source.subarray(begin, end), begin);
};
};
var copyChunk = function(begin, end){
target.set(source.subarray(begin, end), begin);
};
var begin = infoAr[0];
var end = infoAr[1];
if (end > 0){
copy16(begin, end);
copy8(infoAr[2], infoAr[3]);
copy8(infoAr[4], infoAr[5]);
};
begin = infoAr[6];
end = infoAr[7];
if (end > 0){
copy16(begin, end);
copy8(infoAr[8], infoAr[9]);
copy8(infoAr[10], infoAr[11]);
};
begin = infoAr[12];
end = infoAr[15];
if (end > 0){
copyChunk(begin, end);
copyChunk(infoAr[13], infoAr[16]);
copyChunk(infoAr[14], infoAr[17]);
};
};
var sliceMsgFun = function(){};
var setSliceCnt = function(parSliceCnt){
sliceCnt = parSliceCnt;
lastSliceNum = sliceCnt - 1;
};
self.addEventListener('message', function(e) {
if (isWorker){
if (reuseMemory){
if (e.data.reuse){
memAr.push(e.data.reuse);
};
};
if (e.data.buf){
if (sliceMode && awaiting !== 0){
pile.push(e.data);
}else{
decoder.decode(
new Uint8Array(e.data.buf, e.data.offset || 0, e.data.length),
e.data.info,
function(){
if (sliceMode && sliceNum !== lastSliceNum){
postMessage(e.data, [e.data.buf]);
};
}
);
};
return;
};
if (e.data.slice){
// update ref pic
var copyStart = nowValue();
copySlice(new Uint8Array(e.data.slice), lastBuf, e.data.infos[0].sliceInfoAr, e.data.width, e.data.height);
// is it the one? then we need to update it
if (e.data.theOne){
copySlice(lastBuf, new Uint8Array(e.data.slice), sliceInfoAr, e.data.width, e.data.height);
if (timeDecoding > e.data.infos[0].timeDecoding){
e.data.infos[0].timeDecoding = timeDecoding;
};
e.data.infos[0].timeCopy += (nowValue() - copyStart);
};
// move on
postMessage(e.data, [e.data.slice]);
// next frame in the pipe?
awaiting -= 1;
if (awaiting === 0 && pile.length){
var data = pile.shift();
decoder.decode(
new Uint8Array(data.buf, data.offset || 0, data.length),
data.info,
function(){
if (sliceMode && sliceNum !== lastSliceNum){
postMessage(data, [data.buf]);
};
}
);
};
return;
};
if (e.data.setSliceCnt){
setSliceCnt(e.data.sliceCnt);
return;
};
}else{
if (e.data && e.data.type === "Broadway.js - Worker init"){
isWorker = true;
decoder = new Decoder(e.data.options);
if (e.data.options.sliceMode){
reuseMemory = true;
sliceMode = true;
sliceNum = e.data.options.sliceNum;
setSliceCnt(e.data.options.sliceCnt);
decoder.onPictureDecoded = function (buffer, width, height, infos) {
// buffer needs to be copied because we give up ownership
var copyU8 = new Uint8Array(getMem(buffer.length));
copySlice(buffer, copyU8, infos[0].sliceInfoAr, width, height);
startDecoding = infos[0].startDecoding;
finishDecoding = infos[0].finishDecoding;
timeDecoding = finishDecoding - startDecoding;
infos[0].timeDecoding = timeDecoding;
infos[0].timeCopy = 0;
postMessage({
slice: copyU8.buffer,
sliceNum: sliceNum,
width: width,
height: height,
infos: infos
}, [copyU8.buffer]); // 2nd parameter is used to indicate transfer of ownership
awaiting = sliceCnt - 1;
lastBuf = buffer;
sliceInfoAr = infos[0].sliceInfoAr;
};
}else if (e.data.options.reuseMemory){
reuseMemory = true;
decoder.onPictureDecoded = function (buffer, width, height, infos) {
// buffer needs to be copied because we give up ownership
var copyU8 = new Uint8Array(getMem(buffer.length));
copyU8.set( buffer, 0, buffer.length );
postMessage({
buf: copyU8.buffer,
length: buffer.length,
width: width,
height: height,
infos: infos
}, [copyU8.buffer]); // 2nd parameter is used to indicate transfer of ownership
};
}else{
decoder.onPictureDecoded = function (buffer, width, height, infos) {
if (buffer) {
buffer = new Uint8Array(buffer);
};
// buffer needs to be copied because we give up ownership
var copyU8 = new Uint8Array(buffer.length);
copyU8.set( buffer, 0, buffer.length );
postMessage({
buf: copyU8.buffer,
length: buffer.length,
width: width,
height: height,
infos: infos
}, [copyU8.buffer]); // 2nd parameter is used to indicate transfer of ownership
};
};
postMessage({ consoleLog: "broadway worker initialized" });
};
};
}, false);
};
Decoder.nowValue = nowValue;
return Decoder;
})();
}));