From dd290accc1a3fbeb4b1caf36d395385090b33b16 Mon Sep 17 00:00:00 2001 From: Surma Date: Wed, 7 Aug 2024 15:08:13 +0100 Subject: [PATCH] Better caching --- codecs/.gitignore | 1 + codecs/mozjpeg/dec/mozjpeg_dec.cpp | 57 ----- codecs/mozjpeg/dec/mozjpeg_node_dec.js | 16 -- codecs/mozjpeg/dec/mozjpeg_node_dec.wasm | Bin 163966 -> 0 bytes codecs/mozjpeg/flake.nix | 38 +-- codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.cpp | 239 ++++++++++++++++++ .../mozjpeg/wasm_build/enc/mozjpeg_enc.d.ts | 37 +++ codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.js | 16 ++ .../mozjpeg/wasm_build/enc/mozjpeg_enc.wasm | Bin 0 -> 320147 bytes src/features/encoders/mozJPEG/shared/meta.ts | 2 +- .../encoders/mozJPEG/worker/mozjpegEncode.ts | 2 +- 11 files changed, 317 insertions(+), 91 deletions(-) create mode 100644 codecs/.gitignore delete mode 100644 codecs/mozjpeg/dec/mozjpeg_dec.cpp delete mode 100644 codecs/mozjpeg/dec/mozjpeg_node_dec.js delete mode 100755 codecs/mozjpeg/dec/mozjpeg_node_dec.wasm create mode 100644 codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.cpp create mode 100644 codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.d.ts create mode 100644 codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.js create mode 100755 codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.wasm diff --git a/codecs/.gitignore b/codecs/.gitignore new file mode 100644 index 00000000..be09325e --- /dev/null +++ b/codecs/.gitignore @@ -0,0 +1 @@ +!wasm_build diff --git a/codecs/mozjpeg/dec/mozjpeg_dec.cpp b/codecs/mozjpeg/dec/mozjpeg_dec.cpp deleted file mode 100644 index 6c08a9f9..00000000 --- a/codecs/mozjpeg/dec/mozjpeg_dec.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include -#include "config.h" -#include "jpeglib.h" - -extern "C" { -#include "cdjpeg.h" -} - -using namespace emscripten; - -thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); -thread_local const val ImageData = val::global("ImageData"); - -val decode(std::string image_in) { - uint8_t* image_buffer = (uint8_t*)image_in.c_str(); - - jpeg_decompress_struct cinfo; - jpeg_error_mgr jerr; - // Initialize the JPEG decompression object with default error handling. - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_decompress(&cinfo); - - jpeg_mem_src(&cinfo, image_buffer, image_in.length()); - // Read file header, set default decompression parameters - jpeg_read_header(&cinfo, TRUE); - // Force RGBA decoding, even for grayscale images - cinfo.out_color_space = JCS_EXT_RGBA; - jpeg_start_decompress(&cinfo); - - // Prepare output buffer - size_t output_size = cinfo.output_width * cinfo.output_height * 4; - std::vector output_buffer(output_size); - auto stride = cinfo.output_width * 4; - - // Process data - while (cinfo.output_scanline < cinfo.output_height) { - uint8_t* ptr = &output_buffer[stride * cinfo.output_scanline]; - jpeg_read_scanlines(&cinfo, &ptr, 1); - } - jpeg_finish_decompress(&cinfo); - - // Step 7: release JPEG compression object - - auto data = Uint8ClampedArray.new_(typed_memory_view(output_size, &output_buffer[0])); - auto js_result = ImageData.new_(data, cinfo.output_width, cinfo.output_height); - - // This is an important step since it will release a good deal of memory. - jpeg_destroy_decompress(&cinfo); - - // And we're done! - return js_result; -} - -EMSCRIPTEN_BINDINGS(my_module) { - function("decode", &decode); -} diff --git a/codecs/mozjpeg/dec/mozjpeg_node_dec.js b/codecs/mozjpeg/dec/mozjpeg_node_dec.js deleted file mode 100644 index d9d9fc27..00000000 --- a/codecs/mozjpeg/dec/mozjpeg_node_dec.js +++ /dev/null @@ -1,16 +0,0 @@ - -var Module = (function() { - var _scriptDir = import.meta.url; - - return ( -function(Module) { - Module = Module || {}; - -var Module=typeof Module!=="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readBinary;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;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)}}var UTF8Decoder=new TextDecoder("utf8");function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;return UTF8Decoder.decode(heap.subarray?heap.subarray(idx,endPtr):new Uint8Array(heap.slice(idx,endPtr)))}function UTF8ToString(ptr,maxBytesToRead){if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))}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;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){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=new TextDecoder("utf-16le");function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));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){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){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){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 writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}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 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 INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];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 initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function exitRuntime(){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 addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}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"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}if(Module["locateFile"]){var wasmBinaryFile="mozjpeg_node_dec.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{var wasmBinaryFile=new URL("mozjpeg_node_dec.wasm",import.meta.url).toString()}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"){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)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["z"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["F"];addOnInit(Module["asm"]["A"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(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().catch(readyPromiseReject);return{}}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){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function _atexit(func,arg){}function ___cxa_thread_atexit(a0,a1){return _atexit(a0,a1)}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}else{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>shift])},destructorFunction:null})}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>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(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 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 runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}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>2)+i])}return array}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){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)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i>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=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.includes("unsigned");registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}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+"]!")}return isUnsignedType?value>>>0:value|0},"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;i>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;i>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}})}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i>> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}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}}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){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};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 _exit(status){exit(status)}function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _setTempRet0(val){setTempRet0(val)}embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var asmLibraryArg={"e":___cxa_thread_atexit,"q":__embind_register_bigint,"m":__embind_register_bool,"x":__embind_register_emval,"l":__embind_register_float,"o":__embind_register_function,"b":__embind_register_integer,"a":__embind_register_memory_view,"h":__embind_register_std_string,"g":__embind_register_std_wstring,"n":__embind_register_void,"c":__emval_decref,"d":__emval_get_global,"i":__emval_incref,"j":__emval_new,"k":_abort,"s":_emscripten_memcpy_big,"f":_emscripten_resize_heap,"t":_environ_get,"u":_environ_sizes_get,"y":_exit,"w":_fd_close,"p":_fd_seek,"v":_fd_write,"r":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["A"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["B"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["C"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["D"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["E"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["G"]).apply(null,arguments)};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 run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);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){EXITSTATUS=status;if(implicit&&keepRuntimeAlive()&&status===0){return}if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); - - - return Module.ready -} -); -})(); -export default Module; \ No newline at end of file diff --git a/codecs/mozjpeg/dec/mozjpeg_node_dec.wasm b/codecs/mozjpeg/dec/mozjpeg_node_dec.wasm deleted file mode 100755 index abf13d75f271a883c12a4ccb50556cf39f865ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163966 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

aq^`Z9UsG*%;@STnG( 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 SGhVXllRSKeAJv6r>;DfC4$74P diff --git a/codecs/mozjpeg/flake.nix b/codecs/mozjpeg/flake.nix index 9fb00e60..8b5c32ee 100644 --- a/codecs/mozjpeg/flake.nix +++ b/codecs/mozjpeg/flake.nix @@ -25,7 +25,13 @@ default = mozjpeg-squoosh; mozjpeg-squoosh = stdenv.mkDerivation { name = "mozjpeg-squoosh"; - src = lib.cleanSource ./.; + # Only copy files that are actually relevant to avoid unnecessary + # cache invalidations. + src = runCommand "src" { } '' + mkdir $out + cp -r ${./.}/enc $out/ + cp ${./.}/Makefile $out/ + ''; nativeBuildInputs = [ emscripten mozjpeg @@ -52,18 +58,18 @@ pkg-config ]; configurePhase = '' - # $HOME is required for Emscripten to work. - # See: https://nixos.org/manual/nixpkgs/stable/#emscripten - export HOME=$TMPDIR - autoreconf -ifv - emconfigure ./configure \ - --disable-shared \ - --without-turbojpeg \ - --without-simd \ - --without-arith-enc \ - --without-arith-dec \ - --with-build-date=squoosh \ - --prefix=$out + # $HOME is required for Emscripten to work. + # See: https://nixos.org/manual/nixpkgs/stable/#emscripten + export HOME=$TMPDIR + autoreconf -ifv + emconfigure ./configure \ + --disable-shared \ + --without-turbojpeg \ + --without-simd \ + --without-arith-enc \ + --without-arith-dec \ + --with-build-date=squoosh \ + --prefix=$out ''; buildPhase = '' export HOME=$TMPDIR @@ -77,9 +83,9 @@ dontFixup = true; }; installScript = writeShellScriptBin "install.sh" '' - ${pkgs.coreutils}/bin/rm -rf build - ${pkgs.coreutils}/bin/mkdir -p build - ${pkgs.rsync}/bin/rsync --chmod=u+w -r ${mozjpeg-squoosh}/* build/ + ${pkgs.coreutils}/bin/rm -rf wasm_build + ${pkgs.coreutils}/bin/mkdir -p wasm_build + ${pkgs.rsync}/bin/rsync --chmod=u+w -r ${mozjpeg-squoosh}/* wasm_build/ ''; }; apps = { diff --git a/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.cpp b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.cpp new file mode 100644 index 00000000..614f7cb4 --- /dev/null +++ b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.cpp @@ -0,0 +1,239 @@ +#include +#include +#include +#include +#include +#include +#include +#include "jconfig.h" +#include "jpeglib.h" + +extern "C" { +#include "cdjpeg.h" +} + +using namespace emscripten; + +// MozJPEG doesn’t expose a numeric version, so I have to do some fun C macro +// hackery to turn it into a string. More details here: +// https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html +#define xstr(s) str(s) +#define str(s) #s + +struct MozJpegOptions { + int quality; + bool baseline; + bool arithmetic; + bool progressive; + bool optimize_coding; + int smoothing; + int color_space; + int quant_table; + bool trellis_multipass; + bool trellis_opt_zero; + bool trellis_opt_table; + int trellis_loops; + bool auto_subsample; + int chroma_subsample; + bool separate_chroma_quality; + int chroma_quality; +}; + +int version() { + char buffer[] = xstr(MOZJPEG_VERSION); + int version = 0; + int last_index = 0; + for (int i = 0; i < strlen(buffer); i++) { + if (buffer[i] == '.') { + buffer[i] = '\0'; + version = version << 8 | atoi(&buffer[last_index]); + buffer[i] = '.'; + last_index = i + 1; + } + } + version = version << 8 | atoi(&buffer[last_index]); + return version; +} + +thread_local const val Uint8Array = val::global("Uint8Array"); + +val encode(std::string image_in, int image_width, int image_height, MozJpegOptions opts) { + uint8_t* image_buffer = (uint8_t*)image_in.c_str(); + + // The code below is basically the `write_JPEG_file` function from + // https://github.com/mozilla/mozjpeg/blob/master/example.c + // I just write to memory instead of a file. + + /* Step 1: allocate and initialize JPEG compression object */ + + /* This struct contains the JPEG compression parameters and pointers to + * working space (which is allocated as needed by the JPEG library). + * It is possible to have several such structures, representing multiple + * compression/decompression processes, in existence at once. We refer + * to any one struct (and its associated working data) as a "JPEG object". + */ + jpeg_compress_struct cinfo; + /* This struct represents a JPEG error handler. It is declared separately + * because applications often want to supply a specialized error handler + * (see the second half of this file for an example). But here we just + * take the easy way out and use the standard error handler, which will + * print a message on stderr and call exit() if compression fails. + * Note that this struct must live as long as the main JPEG parameter + * struct, to avoid dangling-pointer problems. + */ + jpeg_error_mgr jerr; + /* We have to set up the error handler first, in case the initialization + * step fails. (Unlikely, but it could happen if you are out of memory.) + * This routine fills in the contents of struct jerr, and returns jerr's + * address which we place into the link field in cinfo. + */ + cinfo.err = jpeg_std_error(&jerr); + /* Now we can initialize the JPEG compression object. */ + jpeg_create_compress(&cinfo); + + /* Step 2: specify data destination (eg, a file) */ + /* Note: steps 2 and 3 can be done in either order. */ + + /* Here we use the library-supplied code to send compressed data to a + * stdio stream. You can also write your own code to do something else. + * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that + * requires it in order to write binary files. + */ + // if ((outfile = fopen(filename, "wb")) == NULL) { + // fprintf(stderr, "can't open %s\n", filename); + // exit(1); + // } + uint8_t* output = nullptr; + unsigned long size = 0; + jpeg_mem_dest(&cinfo, &output, &size); + + /* Step 3: set parameters for compression */ + + /* First we supply a description of the input image. + * Four fields of the cinfo struct must be filled in: + */ + cinfo.image_width = image_width; /* image width and height, in pixels */ + cinfo.image_height = image_height; + cinfo.input_components = 4; /* # of color components per pixel */ + cinfo.in_color_space = JCS_EXT_RGBA; /* colorspace of input image */ + /* Now use the library's routine to set default compression parameters. + * (You must set at least cinfo.in_color_space before calling this, + * since the defaults depend on the source color space.) + */ + jpeg_set_defaults(&cinfo); + + jpeg_set_colorspace(&cinfo, (J_COLOR_SPACE)opts.color_space); + + if (opts.quant_table != -1) { + jpeg_c_set_int_param(&cinfo, JINT_BASE_QUANT_TBL_IDX, opts.quant_table); + } + + cinfo.optimize_coding = opts.optimize_coding; + + if (opts.arithmetic) { + cinfo.arith_code = TRUE; + cinfo.optimize_coding = FALSE; + } + + cinfo.smoothing_factor = opts.smoothing; + + jpeg_c_set_bool_param(&cinfo, JBOOLEAN_USE_SCANS_IN_TRELLIS, opts.trellis_multipass); + jpeg_c_set_bool_param(&cinfo, JBOOLEAN_TRELLIS_EOB_OPT, opts.trellis_opt_zero); + jpeg_c_set_bool_param(&cinfo, JBOOLEAN_TRELLIS_Q_OPT, opts.trellis_opt_table); + jpeg_c_set_int_param(&cinfo, JINT_TRELLIS_NUM_LOOPS, opts.trellis_loops); + jpeg_c_set_int_param(&cinfo, JINT_DC_SCAN_OPT_MODE, 0); + + // A little hacky to build a string for this, but it means we can use + // set_quality_ratings which does some useful heuristic stuff. + std::string quality_str = std::to_string(opts.quality); + + if (opts.separate_chroma_quality && opts.color_space == JCS_YCbCr) { + quality_str += "," + std::to_string(opts.chroma_quality); + } + + char const* pqual = quality_str.c_str(); + + set_quality_ratings(&cinfo, (char*)pqual, opts.baseline); + + if (!opts.auto_subsample && opts.color_space == JCS_YCbCr) { + cinfo.comp_info[0].h_samp_factor = opts.chroma_subsample; + cinfo.comp_info[0].v_samp_factor = opts.chroma_subsample; + + if (opts.chroma_subsample > 2) { + // Otherwise encoding fails. + jpeg_c_set_int_param(&cinfo, JINT_DC_SCAN_OPT_MODE, 1); + } + } + + if (!opts.baseline && opts.progressive) { + jpeg_simple_progression(&cinfo); + } else { + cinfo.num_scans = 0; + cinfo.scan_info = NULL; + } + /* Step 4: Start compressor */ + + /* TRUE ensures that we will write a complete interchange-JPEG file. + * Pass TRUE unless you are very sure of what you're doing. + */ + jpeg_start_compress(&cinfo, TRUE); + + /* Step 5: while (scan lines remain to be written) */ + /* jpeg_write_scanlines(...); */ + + /* Here we use the library's state variable cinfo.next_scanline as the + * loop counter, so that we don't have to keep track ourselves. + * To keep things simple, we pass one scanline per call; you can pass + * more if you wish, though. + */ + int row_stride = image_width * 4; /* JSAMPLEs per row in image_buffer */ + + while (cinfo.next_scanline < cinfo.image_height) { + /* jpeg_write_scanlines expects an array of pointers to scanlines. + * Here the array is only one element long, but you could pass + * more than one scanline at a time if that's more convenient. + */ + + JSAMPROW row_pointer = + &image_buffer[cinfo.next_scanline * row_stride]; /* pointer to JSAMPLE row[s] */ + (void)jpeg_write_scanlines(&cinfo, &row_pointer, 1); + } + + /* Step 6: Finish compression */ + + jpeg_finish_compress(&cinfo); + + /* Step 7: release JPEG compression object */ + + auto js_result = Uint8Array.new_(typed_memory_view(size, output)); + + /* This is an important step since it will release a good deal of memory. */ + jpeg_destroy_compress(&cinfo); + free(output); + + /* And we're done! */ + return js_result; +} + +EMSCRIPTEN_BINDINGS(my_module) { + value_object("MozJpegOptions") + .field("quality", &MozJpegOptions::quality) + .field("baseline", &MozJpegOptions::baseline) + .field("arithmetic", &MozJpegOptions::arithmetic) + .field("progressive", &MozJpegOptions::progressive) + .field("optimize_coding", &MozJpegOptions::optimize_coding) + .field("smoothing", &MozJpegOptions::smoothing) + .field("color_space", &MozJpegOptions::color_space) + .field("quant_table", &MozJpegOptions::quant_table) + .field("trellis_multipass", &MozJpegOptions::trellis_multipass) + .field("trellis_opt_zero", &MozJpegOptions::trellis_opt_zero) + .field("trellis_opt_table", &MozJpegOptions::trellis_opt_table) + .field("trellis_loops", &MozJpegOptions::trellis_loops) + .field("chroma_subsample", &MozJpegOptions::chroma_subsample) + .field("auto_subsample", &MozJpegOptions::auto_subsample) + .field("separate_chroma_quality", &MozJpegOptions::separate_chroma_quality) + .field("chroma_quality", &MozJpegOptions::chroma_quality); + + function("version", &version); + function("encode", &encode); +} diff --git a/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.d.ts b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.d.ts new file mode 100644 index 00000000..3c730ae3 --- /dev/null +++ b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.d.ts @@ -0,0 +1,37 @@ +export const enum MozJpegColorSpace { + GRAYSCALE = 1, + RGB, + YCbCr, +} + +export interface EncodeOptions { + quality: number; + baseline: boolean; + arithmetic: boolean; + progressive: boolean; + optimize_coding: boolean; + smoothing: number; + color_space: MozJpegColorSpace; + quant_table: number; + trellis_multipass: boolean; + trellis_opt_zero: boolean; + trellis_opt_table: boolean; + trellis_loops: number; + auto_subsample: boolean; + chroma_subsample: number; + separate_chroma_quality: boolean; + chroma_quality: number; +} + +export interface MozJPEGModule extends EmscriptenWasm.Module { + encode( + data: BufferSource, + width: number, + height: number, + options: EncodeOptions, + ): Uint8Array; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.js b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.js new file mode 100644 index 00000000..9e9c57b3 --- /dev/null +++ b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;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(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{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)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=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 initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}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 addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="mozjpeg_enc.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("mozjpeg_enc.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["D"];updateMemoryViews();wasmTable=wasmExports["F"];addOnInit(wasmExports["E"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var 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)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType["fromWireType"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var 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;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){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 registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{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}};var 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}}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var 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}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var 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 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 UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var 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([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}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)=>{};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":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var 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;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};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder("utf8");var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&HEAPU8[end];)++end;return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+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;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,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+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{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};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{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};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{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};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":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":(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":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var _abort=()=>{abort("")};var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var 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=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var 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};var stringToAscii=(str,buffer)=>{for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0};var SYSCALLS={varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret}};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var _fd_close=fd=>52;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}var printCharBuffers=[null,[],[]];var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};handleAllocatorInit();init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var wasmImports={k:___cxa_throw,m:__embind_finalize_value_object,p:__embind_register_bigint,x:__embind_register_bool,w:__embind_register_emval,h:__embind_register_float,e:__embind_register_function,c:__embind_register_integer,a:__embind_register_memory_view,i:__embind_register_std_string,d:__embind_register_std_wstring,n:__embind_register_value_object,b:__embind_register_value_object_field,y:__embind_register_void,j:__emval_call,g:__emval_decref,B:__emval_get_global,A:__emval_get_method_caller,l:__emval_incref,z:__emval_run_destructors,f:_abort,v:_emscripten_memcpy_js,q:_emscripten_resize_heap,r:_environ_get,s:_environ_sizes_get,C:_exit,t:_fd_close,o:_fd_seek,u:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["E"])();var _malloc=a0=>(_malloc=wasmExports["G"])(a0);var _free=a0=>(_free=wasmExports["H"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["I"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["J"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["K"])(a0,a1,a2,a3,a4);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.wasm b/codecs/mozjpeg/wasm_build/enc/mozjpeg_enc.wasm new file mode 100755 index 0000000000000000000000000000000000000000..d672619c0547f630b094cf92a0afca554b2da091 GIT binary patch literal 320147 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¬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 rOM+jLW*$I#+%nDl7RU5j#IcWFTN