From 8f2dcb5f4822e572e8e27c9e95dad11195bc4df8 Mon Sep 17 00:00:00 2001 From: Jake Archibald Date: Tue, 25 Aug 2020 13:11:10 +0100 Subject: [PATCH] Options mostly working --- codecs/avif/Makefile | 2 +- codecs/avif/dec/avif_dec.js | 8 +- codecs/avif/dec/avif_dec.wasm | Bin 1673844 -> 1674408 bytes codecs/avif/enc/avif_enc.cpp | 22 +- codecs/avif/enc/avif_enc.js | 8 +- codecs/avif/enc/avif_enc.wasm | Bin 1658525 -> 1658670 bytes package-lock.json | 2 +- src/codecs/avif/encoder-meta.ts | 12 +- src/codecs/avif/options.tsx | 298 ++++++++++++++++++++++----- src/codecs/processor-worker/index.ts | 4 +- 10 files changed, 287 insertions(+), 69 deletions(-) diff --git a/codecs/avif/Makefile b/codecs/avif/Makefile index cf4bfbbc..89a23580 100644 --- a/codecs/avif/Makefile +++ b/codecs/avif/Makefile @@ -1,4 +1,4 @@ -CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.0.tar.gz +CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.1.tar.gz CODEC_DIR = node_modules/libavif CODEC_BUILD_DIR := $(CODEC_DIR)/build CODEC_OUT := $(CODEC_BUILD_DIR)/libavif.a diff --git a/codecs/avif/dec/avif_dec.js b/codecs/avif/dec/avif_dec.js index cf3a7202..2f4b3ae1 100644 --- a/codecs/avif/dec/avif_dec.js +++ b/codecs/avif/dec/avif_dec.js @@ -17,7 +17,7 @@ function sa(a,b,c,d){if(!(0=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}var ua="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function va(a,b){var c=a>>1;for(var d=c+b/2;!(c>=d)&&wa[c];)++c;c<<=1;if(32>1];if(0==f||c==b/2)return d;++c;d+=String.fromCharCode(f)}} function xa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;C[b>>1]=0;return b-d}function ya(a){return 2*a.length}function za(a,b){for(var c=0,d="";!(c>=b/4);){var f=D[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d} function Aa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g){var h=a.charCodeAt(++f);g=65536+((g&1023)<<10)|h&1023}D[b>>2]=g;b+=4;if(b+4>c)break}D[b>>2]=0;return b-d}function Ba(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var E,F,B,C,wa,D,I,Ca,Da; -function Ea(a){E=a;e.HEAP8=F=new Int8Array(a);e.HEAP16=C=new Int16Array(a);e.HEAP32=D=new Int32Array(a);e.HEAPU8=B=new Uint8Array(a);e.HEAPU16=wa=new Uint16Array(a);e.HEAPU32=I=new Uint32Array(a);e.HEAPF32=Ca=new Float32Array(a);e.HEAPF64=Da=new Float64Array(a)}var Fa=e.INITIAL_MEMORY||16777216;e.wasmMemory?z=e.wasmMemory:z=new WebAssembly.Memory({initial:Fa/65536,maximum:32768});z&&(E=z.buffer);Fa=E.byteLength;Ea(E);D[224044]=6139216; +function Ea(a){E=a;e.HEAP8=F=new Int8Array(a);e.HEAP16=C=new Int16Array(a);e.HEAP32=D=new Int32Array(a);e.HEAPU8=B=new Uint8Array(a);e.HEAPU16=wa=new Uint16Array(a);e.HEAPU32=I=new Uint32Array(a);e.HEAPF32=Ca=new Float32Array(a);e.HEAPF64=Da=new Float64Array(a)}var Fa=e.INITIAL_MEMORY||16777216;e.wasmMemory?z=e.wasmMemory:z=new WebAssembly.Memory({initial:Fa/65536,maximum:32768});z&&(E=z.buffer);Fa=E.byteLength;Ea(E);D[224048]=6139232; function Ga(a){for(;0Dc;++Dc)Cc[Dc]=String.fromCharCode(Dc);Yb=Cc;dc=e.BindingError=cc("BindingError");ec=e.InternalError=cc("InternalError"); e.count_emval_handles=function(){for(var a=0,b=5;bf?-28:Lb(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return f=Ub(),d.flags|=f,0;case 12:return f=Ub(),C[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return D[Ec()>>2]=28,-1;default:return-28}}catch(g){return"undefined"!==typeof Q&&g instanceof M||w(g),-g.Sa}}, +var Rc={A:function(a){return ob(a)},x:function(){},z:function(a){"uncaught_exception"in Za?Za.Va++:Za.Va=1;throw a;},r:function(a,b,c){Tb=c;try{var d=Vb(a);switch(b){case 0:var f=Ub();return 0>f?-28:Lb(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return f=Ub(),d.flags|=f,0;case 12:return f=Ub(),C[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return D[Ec()>>2]=28,-1;default:return-28}}catch(g){return"undefined"!==typeof Q&&g instanceof M||w(g),-g.Sa}}, M:function(a,b,c){Tb=c;try{var d=Vb(a);switch(b){case 21509:case 21505:return d.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return d.tty?0:-59;case 21519:if(!d.tty)return-59;var f=Ub();return D[f>>2]=0;case 21520:return d.tty?-28:-59;case 21531:a=f=Ub();if(!d.Ka.qb)throw new M(59);return d.Ka.qb(d,b,a);case 21523:return d.tty?0:-59;case 21524:return d.tty?0:-59;default:w("bad ioctl syscall "+b)}}catch(g){return"undefined"!==typeof Q&&g instanceof M||w(g),-g.Sa}},N:function(a, b,c){Tb=c;try{var d=a?A(B,a,void 0):"",f=Ub();return Lb(d,b,f).fd}catch(g){return"undefined"!==typeof Q&&g instanceof M||w(g),-g.Sa}},P:function(a,b,c,d,f){var g=Wb(c);b=R(b);U(a,{name:b,fromWireType:function(h){return!!h},toWireType:function(h,k){return k?d:f},argPackAdvance:8,readValueFromPointer:function(h){if(1===c)var k=F;else if(2===c)k=C;else if(4===c)k=D;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[h>>g])},Qa:null})},O:function(a,b){b=R(b);U(a,{name:b, fromWireType:function(c){var d=V[c].value;ic(c);return d},toWireType:function(c,d){return jc(d)},argPackAdvance:8,readValueFromPointer:kc,Qa:null})},v:function(a,b,c){c=Wb(c);b=R(b);U(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,f){if("number"!==typeof f&&"boolean"!==typeof f)throw new TypeError('Cannot convert "'+lc(f)+'" to '+this.name);return f},argPackAdvance:8,readValueFromPointer:mc(b,c),Qa:null})},B:function(a,b,c,d,f,g){var h=rc(b,c);a=R(a);f=sc(d,f);qc(a,function(){wc("Cannot call "+ @@ -77,7 +77,7 @@ s:ic,Q:function(a){if(0===a)return jc(zc());var b=yc[a];a=void 0===b?R(a):b;retu g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";f=(new Function("requireRegisteredType","Module","__emval_register",h+("var obj = new constructor("+f+");\nreturn __emval_register(obj);\n}\n")))(Ac,e,jc);Bc[b]=f}return f(a,c,d)},o:function(){w()},d:function(a,b){X(a,b||1);throw"longjmp";},K:function(a,b,c){B.copyWithin(a,b,b+c)},j:function(a){a>>>=0;var b=B.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216, a,d);0>>16);Ea(z.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},u:function(a){try{var b=Vb(a);if(null===b.fd)throw new M(8);b.Za&&(b.Za=null);try{b.Ka.close&&b.Ka.close(b)}catch(c){throw c;}finally{rb[b.fd]=null}b.fd=null;return 0}catch(c){return"undefined"!==typeof Q&&c instanceof M||w(c),c.Sa}},L:function(a,b,c,d){try{a:{for(var f=Vb(a),g=a=0;g>2],k=f,m=D[b+8*g>>2], n=h,r=void 0,t=F;if(0>n||0>r)throw new M(28);if(null===k.fd)throw new M(8);if(1===(k.flags&2097155))throw new M(8);if(16384===(k.node.mode&61440))throw new M(31);if(!k.Ka.read)throw new M(28);var v="undefined"!==typeof r;if(!v)r=k.position;else if(!k.seekable)throw new M(70);var x=k.Ka.read(k,t,m,n,r);v||(k.position+=x);var p=x;if(0>p){var G=-1;break a}a+=p;if(p>2]=G;return 0}catch(H){return"undefined"!==typeof Q&&H instanceof M||w(H),H.Sa}},G:function(a,b,c,d,f){try{var g=Vb(a); -a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Nb(g,a,d);Xa=[g.position>>>0,(L=g.position,1<=+Ma(L)?0>>0:~~+Na((L-+(~~L>>>0))/4294967296)>>>0:0)];D[f>>2]=Xa[0];D[f+4>>2]=Xa[1];g.Za&&0===a&&0===d&&(g.Za=null);return 0}catch(h){return"undefined"!==typeof Q&&h instanceof M||w(h),h.Sa}},r:function(a,b,c,d){try{a:{for(var f=Vb(a),g=a=0;g>2],m=D[b+(8*g+4)>>2],n=void 0,r=F;if(0>m||0>n)throw new M(28);if(null=== +a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Nb(g,a,d);Xa=[g.position>>>0,(L=g.position,1<=+Ma(L)?0>>0:~~+Na((L-+(~~L>>>0))/4294967296)>>>0:0)];D[f>>2]=Xa[0];D[f+4>>2]=Xa[1];g.Za&&0===a&&0===d&&(g.Za=null);return 0}catch(h){return"undefined"!==typeof Q&&h instanceof M||w(h),h.Sa}},t:function(a,b,c,d){try{a:{for(var f=Vb(a),g=a=0;g>2],m=D[b+(8*g+4)>>2],n=void 0,r=F;if(0>m||0>n)throw new M(28);if(null=== h.fd)throw new M(8);if(0===(h.flags&2097155))throw new M(8);if(16384===(h.node.mode&61440))throw new M(31);if(!h.Ka.write)throw new M(28);h.seekable&&h.flags&1024&&Nb(h,0,2);var t="undefined"!==typeof n;if(!t)n=h.position;else if(!h.seekable)throw new M(70);var v=h.Ka.write(h,r,k,m,n,void 0);t||(h.position+=v);try{if(h.path&&vb.onWriteToFile)vb.onWriteToFile(h.path)}catch(G){y("FS.trackingDelegate['onWriteToFile']('"+h.path+"') threw an exception: "+G.message)}var x=v;if(0>x){var p=-1;break a}a+= x}p=a}D[d>>2]=p;return 0}catch(G){return"undefined"!==typeof Q&&G instanceof M||w(G),G.Sa}},a:function(){return na|0},m:Fc,e:Gc,I:Hc,p:Ic,H:Jc,D:Kc,C:Lc,E:Mc,J:Nc,k:Oc,l:Pc,c:Qc,memory:z,g:function(a){a=+a;return 0<=a?+Oa(a+.5):+Na(a-.5)},h:function(a){a=+a;return 0<=a?+Oa(a+.5):+Na(a-.5)},b:function(a){na=a|0},table:pa}; (function(){function a(f){e.asm=f.exports;J--;e.monitorRunDependencies&&e.monitorRunDependencies(J);0==J&&(null!==Qa&&(clearInterval(Qa),Qa=null),Ra&&(f=Ra,Ra=null,f()))}function b(f){a(f.instance)}function c(f){return Wa().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){y("failed to asynchronously prepare wasm: "+g);w(g)})}var d={a:Rc};J++;e.monitorRunDependencies&&e.monitorRunDependencies(J);if(e.instantiateWasm)try{return e.instantiateWasm(d,a)}catch(f){return y("Module.instantiateWasm callback failed with error: "+ @@ -88,7 +88,7 @@ Uc=e.dynCall_vii=function(){return(Uc=e.dynCall_vii=e.asm.aa).apply(null,argumen var Yc=e.dynCall_iiiii=function(){return(Yc=e.dynCall_iiiii=e.asm.ga).apply(null,arguments)},Zc=e.dynCall_iiiiiiiii=function(){return(Zc=e.dynCall_iiiiiiiii=e.asm.ha).apply(null,arguments)},$c=e.dynCall_iiiiiiiiii=function(){return($c=e.dynCall_iiiiiiiiii=e.asm.ia).apply(null,arguments)},ad=e.dynCall_iiiijj=function(){return(ad=e.dynCall_iiiijj=e.asm.ja).apply(null,arguments)},bd=e.dynCall_ij=function(){return(bd=e.dynCall_ij=e.asm.ka).apply(null,arguments)},cd=e.dynCall_jjij=function(){return(cd= e.dynCall_jjij=e.asm.la).apply(null,arguments)};e.dynCall_viiiiii=function(){return(e.dynCall_viiiiii=e.asm.ma).apply(null,arguments)};e.dynCall_viiiii=function(){return(e.dynCall_viiiii=e.asm.na).apply(null,arguments)};e.dynCall_viiiiiiii=function(){return(e.dynCall_viiiiiiii=e.asm.oa).apply(null,arguments)};e.dynCall_viiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiii=e.asm.pa).apply(null,arguments)};e.dynCall_viiiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiiii=e.asm.qa).apply(null,arguments)}; e.dynCall_viiiiiii=function(){return(e.dynCall_viiiiiii=e.asm.ra).apply(null,arguments)};e.dynCall_viiiiiiiii=function(){return(e.dynCall_viiiiiiiii=e.asm.sa).apply(null,arguments)};e.dynCall_iiiiii=function(){return(e.dynCall_iiiiii=e.asm.ta).apply(null,arguments)};e.dynCall_jiiiiiiiii=function(){return(e.dynCall_jiiiiiiiii=e.asm.ua).apply(null,arguments)};e.dynCall_iiiiiii=function(){return(e.dynCall_iiiiiii=e.asm.va).apply(null,arguments)}; -e.dynCall_iiiiiiii=function(){return(e.dynCall_iiiiiiii=e.asm.wa).apply(null,arguments)};e.dynCall_iiiiiiiiiiii=function(){return(e.dynCall_iiiiiiiiiiii=e.asm.xa).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.ya).apply(null,arguments)};e.dynCall_iidiiii=function(){return(e.dynCall_iidiiii=e.asm.za).apply(null,arguments)};e.dynCall_i=function(){return(e.dynCall_i=e.asm.Aa).apply(null,arguments)}; +e.dynCall_iiiiiiii=function(){return(e.dynCall_iiiiiiii=e.asm.wa).apply(null,arguments)};e.dynCall_iiiiiiiiiiii=function(){return(e.dynCall_iiiiiiiiiiii=e.asm.xa).apply(null,arguments)};e.dynCall_iidiiii=function(){return(e.dynCall_iidiiii=e.asm.ya).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.za).apply(null,arguments)};e.dynCall_i=function(){return(e.dynCall_i=e.asm.Aa).apply(null,arguments)}; e.dynCall_viiiiiiiiii=function(){return(e.dynCall_viiiiiiiiii=e.asm.Ba).apply(null,arguments)};e.dynCall_viiiiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiiiii=e.asm.Ca).apply(null,arguments)};e.dynCall_jiiiiiiii=function(){return(e.dynCall_jiiiiiiii=e.asm.Da).apply(null,arguments)};e.dynCall_ff=function(){return(e.dynCall_ff=e.asm.Ea).apply(null,arguments)};e.dynCall_jiiiiii=function(){return(e.dynCall_jiiiiii=e.asm.Fa).apply(null,arguments)}; e.dynCall_jiiiii=function(){return(e.dynCall_jiiiii=e.asm.Ga).apply(null,arguments)};e.dynCall_iiijii=function(){return(e.dynCall_iiijii=e.asm.Ha).apply(null,arguments)};function Pc(a,b,c){var d=Y();try{Uc(a,b,c)}catch(f){Z(d);if(f!==f+0&&"longjmp"!==f)throw f;X(1,0)}}function Qc(a,b,c,d,f){var g=Y();try{Vc(a,b,c,d,f)}catch(h){Z(g);if(h!==h+0&&"longjmp"!==h)throw h;X(1,0)}}function Gc(a,b,c){var d=Y();try{return Xc(a,b,c)}catch(f){Z(d);if(f!==f+0&&"longjmp"!==f)throw f;X(1,0)}} function Oc(a,b){var c=Y();try{Tc(a,b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;X(1,0)}}function Nc(a){var b=Y();try{Sc(a)}catch(c){Z(b);if(c!==c+0&&"longjmp"!==c)throw c;X(1,0)}}function Fc(a,b){var c=Y();try{return Wc(a,b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;X(1,0)}}function Hc(a,b,c,d,f){var g=Y();try{return Yc(a,b,c,d,f)}catch(h){Z(g);if(h!==h+0&&"longjmp"!==h)throw h;X(1,0)}} diff --git a/codecs/avif/dec/avif_dec.wasm b/codecs/avif/dec/avif_dec.wasm index a96f4d3e30997fe81feb3acde7ac578ce3b9901d..e29dc87eedbd3e29dfd0cb8e707c19352aaabeba 100644 GIT binary patch delta 46785 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 wS(rNnn%Il2P}GY7IyNBQ``)jEX4OP^?!?=p6zJ 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 diff --git a/codecs/avif/enc/avif_enc.cpp b/codecs/avif/enc/avif_enc.cpp index e295c5de..1f47e4a2 100644 --- a/codecs/avif/enc/avif_enc.cpp +++ b/codecs/avif/enc/avif_enc.cpp @@ -10,6 +10,8 @@ struct AvifOptions { // 63 = worst quality int minQuantizer; int maxQuantizer; + int minQuantizerAlpha; + int maxQuantizerAlpha; // [0 - 6] // Creates 2^n tiles in that dimension int tileRowsLog2; @@ -18,9 +20,10 @@ struct AvifOptions { // 0 = slowest // 10 = fastest int speed; - // 0 = 4:2:0 - // 1 = 4:2:2 - // 2 = 4:4:4 + // 0 = 4:0:0 + // 1 = 4:2:0 + // 2 = 4:2:2 + // 3 = 4:4:4 int subsample; }; @@ -32,12 +35,15 @@ val encode(std::string buffer, int width, int height, AvifOptions options) { avifPixelFormat format; switch (options.subsample) { case 0: - format = AVIF_PIXEL_FORMAT_YUV420; + format = AVIF_PIXEL_FORMAT_YUV400; break; case 1: - format = AVIF_PIXEL_FORMAT_YUV422; + format = AVIF_PIXEL_FORMAT_YUV420; break; case 2: + format = AVIF_PIXEL_FORMAT_YUV422; + break; + case 3: format = AVIF_PIXEL_FORMAT_YUV444; break; } @@ -56,13 +62,15 @@ val encode(std::string buffer, int width, int height, AvifOptions options) { encoder->maxThreads = 1; encoder->minQuantizer = options.minQuantizer; encoder->maxQuantizer = options.maxQuantizer; + encoder->minQuantizerAlpha = options.minQuantizerAlpha; + encoder->maxQuantizerAlpha = options.maxQuantizerAlpha; encoder->tileRowsLog2 = options.tileRowsLog2; encoder->tileColsLog2 = options.tileColsLog2; encoder->speed = options.speed; avifResult encodeResult = avifEncoderWrite(encoder, image, &output); auto js_result = val::null(); if (encodeResult == AVIF_RESULT_OK) { - js_result = Uint8Array.new_(typed_memory_view(output.size, output.data)); + js_result = Uint8Array.new_(typed_memory_view(output.size, output.data)); } avifImageDestroy(image); @@ -75,6 +83,8 @@ EMSCRIPTEN_BINDINGS(my_module) { value_object("AvifOptions") .field("minQuantizer", &AvifOptions::minQuantizer) .field("maxQuantizer", &AvifOptions::maxQuantizer) + .field("minQuantizerAlpha", &AvifOptions::minQuantizerAlpha) + .field("maxQuantizerAlpha", &AvifOptions::maxQuantizerAlpha) .field("tileRowsLog2", &AvifOptions::tileRowsLog2) .field("tileColsLog2", &AvifOptions::tileColsLog2) .field("speed", &AvifOptions::speed) diff --git a/codecs/avif/enc/avif_enc.js b/codecs/avif/enc/avif_enc.js index 79989b12..4c9a17df 100644 --- a/codecs/avif/enc/avif_enc.js +++ b/codecs/avif/enc/avif_enc.js @@ -17,7 +17,7 @@ function sa(a,b,c,d){if(!(0=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}var ua="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function va(a,b){var c=a>>1;for(var d=c+b/2;!(c>=d)&&wa[c];)++c;c<<=1;if(32>1];if(0==f||c==b/2)return d;++c;d+=String.fromCharCode(f)}} function xa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;D[b>>1]=0;return b-d}function ya(a){return 2*a.length}function za(a,b){for(var c=0,d="";!(c>=b/4);){var f=F[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d} function Aa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g){var h=a.charCodeAt(++f);g=65536+((g&1023)<<10)|h&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function Ba(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var G,H,C,D,wa,F,I,Ca,Da; -function Ea(a){G=a;e.HEAP8=H=new Int8Array(a);e.HEAP16=D=new Int16Array(a);e.HEAP32=F=new Int32Array(a);e.HEAPU8=C=new Uint8Array(a);e.HEAPU16=wa=new Uint16Array(a);e.HEAPU32=I=new Uint32Array(a);e.HEAPF32=Ca=new Float32Array(a);e.HEAPF64=Da=new Float64Array(a)}var Fa=e.INITIAL_MEMORY||16777216;e.wasmMemory?A=e.wasmMemory:A=new WebAssembly.Memory({initial:Fa/65536,maximum:32768});A&&(G=A.buffer);Fa=G.byteLength;Ea(G);F[224172]=6139728; +function Ea(a){G=a;e.HEAP8=H=new Int8Array(a);e.HEAP16=D=new Int16Array(a);e.HEAP32=F=new Int32Array(a);e.HEAPU8=C=new Uint8Array(a);e.HEAPU16=wa=new Uint16Array(a);e.HEAPU32=I=new Uint32Array(a);e.HEAPF32=Ca=new Float32Array(a);e.HEAPF64=Da=new Float64Array(a)}var Fa=e.INITIAL_MEMORY||16777216;e.wasmMemory?A=e.wasmMemory:A=new WebAssembly.Memory({initial:Fa/65536,maximum:32768});A&&(G=A.buffer);Fa=G.byteLength;Ea(G);F[224176]=6139744; function Ga(a){for(;0Ec;++Ec)Dc[Ec]=String.fromCharCode(Ec);ic=Dc;jc=e.BindingError=dc("BindingError"); e.count_emval_handles=function(){for(var a=0,b=5;bf?-28:Mb(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return f=Vb(),d.flags|=f,0;case 12:return f=Vb(),D[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return F[Fc()>>2]=28,-1;default:return-28}}catch(g){return"undefined"!==typeof Q&&g instanceof L||x(g),-g.Wa}}, +var Sc={w:function(a){return pb(a)},U:function(){},S:function(a){"uncaught_exception"in $a?$a.Za++:$a.Za=1;throw a;},p:function(a,b,c){Ub=c;try{var d=Wb(a);switch(b){case 0:var f=Vb();return 0>f?-28:Mb(d.path,d.flags,0,f).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return f=Vb(),d.flags|=f,0;case 12:return f=Vb(),D[f+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return F[Fc()>>2]=28,-1;default:return-28}}catch(g){return"undefined"!==typeof Q&&g instanceof L||x(g),-g.Wa}}, M:function(a,b,c){Ub=c;try{var d=Wb(a);switch(b){case 21509:case 21505:return d.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return d.tty?0:-59;case 21519:if(!d.tty)return-59;var f=Vb();return F[f>>2]=0;case 21520:return d.tty?-28:-59;case 21531:a=f=Vb();if(!d.Oa.zb)throw new L(59);return d.Oa.zb(d,b,a);case 21523:return d.tty?0:-59;case 21524:return d.tty?0:-59;default:x("bad ioctl syscall "+b)}}catch(g){return"undefined"!==typeof Q&&g instanceof L||x(g),-g.Wa}},N:function(a, b,c){Ub=c;try{var d=a?B(C,a,void 0):"",f=Vb();return Mb(d,b,f).fd}catch(g){return"undefined"!==typeof Q&&g instanceof L||x(g),-g.Wa}},A:function(a){var b=Xb[a];delete Xb[a];var c=b.Cb,d=b.Db,f=b.kb,g=f.map(function(h){return h.xb}).concat(f.map(function(h){return h.Hb}));fc([a],g,function(h){var k={};f.forEach(function(l,n){var p=h[n],t=l.vb,v=l.wb,w=h[n+f.length],q=l.Gb,E=l.Ib;k[l.tb]={read:function(y){return p.fromWireType(t(v,y))},write:function(y,P){var ra=[];q(E,y,w.toWireType(ra,P));Yb(ra)}}}); return[{name:b.name,fromWireType:function(l){var n={},p;for(p in k)n[p]=k[p].read(l);d(l);return n},toWireType:function(l,n){for(var p in k)if(!(p in n))throw new TypeError('Missing field: "'+p+'"');var t=c();for(p in k)k[p].write(t,n[p]);null!==l&&l.push(d,t);return t},argPackAdvance:8,readValueFromPointer:Zb,Ta:d}]})},P:function(a,b,c,d,f){var g=hc(c);b=T(b);S(a,{name:b,fromWireType:function(h){return!!h},toWireType:function(h,k){return k?d:f},argPackAdvance:8,readValueFromPointer:function(h){if(1=== @@ -80,7 +80,7 @@ a);a=V[a].value;var f=Cc[b];if(!f){f="";for(var g=0;g>>=0;var b=C.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);Ea(A.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},r:function(a){try{var b=Wb(a);if(null===b.fd)throw new L(8); b.cb&&(b.cb=null);try{b.Oa.close&&b.Oa.close(b)}catch(c){throw c;}finally{sb[b.fd]=null}b.fd=null;return 0}catch(c){return"undefined"!==typeof Q&&c instanceof L||x(c),c.Wa}},L:function(a,b,c,d){try{a:{for(var f=Wb(a),g=a=0;g>2],k=f,l=F[b+8*g>>2],n=h,p=void 0,t=H;if(0>n||0>p)throw new L(28);if(null===k.fd)throw new L(8);if(1===(k.flags&2097155))throw new L(8);if(16384===(k.node.mode&61440))throw new L(31);if(!k.Oa.read)throw new L(28);var v="undefined"!==typeof p;if(!v)p= k.position;else if(!k.seekable)throw new L(70);var w=k.Oa.read(k,t,l,n,p);v||(k.position+=w);var q=w;if(0>q){var E=-1;break a}a+=q;if(q>2]=E;return 0}catch(y){return"undefined"!==typeof Q&&y instanceof L||x(y),y.Wa}},E:function(a,b,c,d,f){try{var g=Wb(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Ob(g,a,d);Ya=[g.position>>>0,(Xa=g.position,1<=+Ma(Xa)?0>>0:~~+Na((Xa-+(~~Xa>>>0))/4294967296)>>>0:0)];F[f>>2]= -Ya[0];F[f+4>>2]=Ya[1];g.cb&&0===a&&0===d&&(g.cb=null);return 0}catch(h){return"undefined"!==typeof Q&&h instanceof L||x(h),h.Wa}},p:function(a,b,c,d){try{a:{for(var f=Wb(a),g=a=0;g>2],l=F[b+(8*g+4)>>2],n=void 0,p=H;if(0>l||0>n)throw new L(28);if(null===h.fd)throw new L(8);if(0===(h.flags&2097155))throw new L(8);if(16384===(h.node.mode&61440))throw new L(31);if(!h.Oa.write)throw new L(28);h.seekable&&h.flags&1024&&Ob(h,0,2);var t="undefined"!==typeof n;if(!t)n=h.position; +Ya[0];F[f+4>>2]=Ya[1];g.cb&&0===a&&0===d&&(g.cb=null);return 0}catch(h){return"undefined"!==typeof Q&&h instanceof L||x(h),h.Wa}},q:function(a,b,c,d){try{a:{for(var f=Wb(a),g=a=0;g>2],l=F[b+(8*g+4)>>2],n=void 0,p=H;if(0>l||0>n)throw new L(28);if(null===h.fd)throw new L(8);if(0===(h.flags&2097155))throw new L(8);if(16384===(h.node.mode&61440))throw new L(31);if(!h.Oa.write)throw new L(28);h.seekable&&h.flags&1024&&Ob(h,0,2);var t="undefined"!==typeof n;if(!t)n=h.position; else if(!h.seekable)throw new L(70);var v=h.Oa.write(h,p,k,l,n,void 0);t||(h.position+=v);try{if(h.path&&wb.onWriteToFile)wb.onWriteToFile(h.path)}catch(E){z("FS.trackingDelegate['onWriteToFile']('"+h.path+"') threw an exception: "+E.message)}var w=v;if(0>w){var q=-1;break a}a+=w}q=a}F[d>>2]=q;return 0}catch(E){return"undefined"!==typeof Q&&E instanceof L||x(E),E.Wa}},a:function(){return ma|0},m:Gc,e:Hc,G:Ic,o:Jc,F:Kc,C:Lc,B:Mc,D:Nc,I:Oc,k:Pc,l:Qc,c:Rc,memory:A,g:function(a){a=+a;return 0<=a?+Oa(a+ .5):+Na(a-.5)},h:function(a){a=+a;return 0<=a?+Oa(a+.5):+Na(a-.5)},b:function(a){ma=a|0},table:oa,R:function(a){var b=Date.now()/1E3|0;a&&(F[a>>2]=b);return b}}; (function(){function a(f){e.asm=f.exports;J--;e.monitorRunDependencies&&e.monitorRunDependencies(J);0==J&&(null!==Qa&&(clearInterval(Qa),Qa=null),Ra&&(f=Ra,Ra=null,f()))}function b(f){a(f.instance)}function c(f){return Wa().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){z("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:Sc};J++;e.monitorRunDependencies&&e.monitorRunDependencies(J);if(e.instantiateWasm)try{return e.instantiateWasm(d,a)}catch(f){return z("Module.instantiateWasm callback failed with error: "+ @@ -91,7 +91,7 @@ Vc=e.dynCall_vii=function(){return(Vc=e.dynCall_vii=e.asm.ea).apply(null,argumen var Zc=e.dynCall_iiiii=function(){return(Zc=e.dynCall_iiiii=e.asm.ka).apply(null,arguments)},$c=e.dynCall_iiiiiiiii=function(){return($c=e.dynCall_iiiiiiiii=e.asm.la).apply(null,arguments)},ad=e.dynCall_iiiiiiiiii=function(){return(ad=e.dynCall_iiiiiiiiii=e.asm.ma).apply(null,arguments)},bd=e.dynCall_iiiijj=function(){return(bd=e.dynCall_iiiijj=e.asm.na).apply(null,arguments)},cd=e.dynCall_ij=function(){return(cd=e.dynCall_ij=e.asm.oa).apply(null,arguments)},dd=e.dynCall_jjij=function(){return(dd= e.dynCall_jjij=e.asm.pa).apply(null,arguments)};e.dynCall_i=function(){return(e.dynCall_i=e.asm.qa).apply(null,arguments)};e.dynCall_iiiiii=function(){return(e.dynCall_iiiiii=e.asm.ra).apply(null,arguments)};e.dynCall_viiiii=function(){return(e.dynCall_viiiii=e.asm.sa).apply(null,arguments)};e.dynCall_viiiiii=function(){return(e.dynCall_viiiiii=e.asm.ta).apply(null,arguments)};e.dynCall_viiiiiiii=function(){return(e.dynCall_viiiiiiii=e.asm.ua).apply(null,arguments)}; e.dynCall_viiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiii=e.asm.va).apply(null,arguments)};e.dynCall_viiiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiiii=e.asm.wa).apply(null,arguments)};e.dynCall_viiiiiii=function(){return(e.dynCall_viiiiiii=e.asm.xa).apply(null,arguments)};e.dynCall_viiiiiiiii=function(){return(e.dynCall_viiiiiiiii=e.asm.ya).apply(null,arguments)};e.dynCall_jiiiiiiiii=function(){return(e.dynCall_jiiiiiiiii=e.asm.za).apply(null,arguments)}; -e.dynCall_iiiiiii=function(){return(e.dynCall_iiiiiii=e.asm.Aa).apply(null,arguments)};e.dynCall_iiiiiiii=function(){return(e.dynCall_iiiiiiii=e.asm.Ba).apply(null,arguments)};e.dynCall_iiiiiiiiiiii=function(){return(e.dynCall_iiiiiiiiiiii=e.asm.Ca).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.Da).apply(null,arguments)};e.dynCall_iidiiii=function(){return(e.dynCall_iidiiii=e.asm.Ea).apply(null,arguments)}; +e.dynCall_iiiiiii=function(){return(e.dynCall_iiiiiii=e.asm.Aa).apply(null,arguments)};e.dynCall_iiiiiiii=function(){return(e.dynCall_iiiiiiii=e.asm.Ba).apply(null,arguments)};e.dynCall_iiiiiiiiiiii=function(){return(e.dynCall_iiiiiiiiiiii=e.asm.Ca).apply(null,arguments)};e.dynCall_iidiiii=function(){return(e.dynCall_iidiiii=e.asm.Da).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.Ea).apply(null,arguments)}; e.dynCall_viiiiiiiiii=function(){return(e.dynCall_viiiiiiiiii=e.asm.Fa).apply(null,arguments)};e.dynCall_viiiiiiiiiiiii=function(){return(e.dynCall_viiiiiiiiiiiii=e.asm.Ga).apply(null,arguments)};e.dynCall_jiiiiiiii=function(){return(e.dynCall_jiiiiiiii=e.asm.Ha).apply(null,arguments)};e.dynCall_ff=function(){return(e.dynCall_ff=e.asm.Ia).apply(null,arguments)};e.dynCall_jiiiiii=function(){return(e.dynCall_jiiiiii=e.asm.Ja).apply(null,arguments)}; e.dynCall_jiiiii=function(){return(e.dynCall_jiiiii=e.asm.Ka).apply(null,arguments)};e.dynCall_iiijii=function(){return(e.dynCall_iiijii=e.asm.La).apply(null,arguments)};function Qc(a,b,c){var d=Y();try{Vc(a,b,c)}catch(f){Z(d);if(f!==f+0&&"longjmp"!==f)throw f;X(1,0)}}function Rc(a,b,c,d,f){var g=Y();try{Wc(a,b,c,d,f)}catch(h){Z(g);if(h!==h+0&&"longjmp"!==h)throw h;X(1,0)}}function Hc(a,b,c){var d=Y();try{return Yc(a,b,c)}catch(f){Z(d);if(f!==f+0&&"longjmp"!==f)throw f;X(1,0)}} function Pc(a,b){var c=Y();try{Uc(a,b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;X(1,0)}}function Oc(a){var b=Y();try{Tc(a)}catch(c){Z(b);if(c!==c+0&&"longjmp"!==c)throw c;X(1,0)}}function Gc(a,b){var c=Y();try{return Xc(a,b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;X(1,0)}}function Ic(a,b,c,d,f){var g=Y();try{return Zc(a,b,c,d,f)}catch(h){Z(g);if(h!==h+0&&"longjmp"!==h)throw h;X(1,0)}} diff --git a/codecs/avif/enc/avif_enc.wasm b/codecs/avif/enc/avif_enc.wasm index 67bb405746068b00326101a0d57946834a9d56e1..2a60d70df2438233674c90984a13537add4c1330 100644 GIT binary patch delta 30916 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 delta 31444 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 x022#F>`;aF$a)t54(6-_-f8{ { - state: State = {}; + static getDerivedStateFromProps(props: Props, state: State): Partial | undefined { + if (state.options && shallowEqual(state.options, props.options)) return; + const { options } = props; - @bind - onChange(event: Event) { - const form = (event.currentTarget as HTMLInputElement).closest( - 'form', - ) as HTMLFormElement; - const { options } = this.props; - const newOptions: EncodeOptions = { - // Copy over options the form doesn't currently care about, eg arithmetic - ...this.props.options, - minQuantizer: inputFieldValueAsNumber( - form.quantizer, - options.minQuantizer, - ), - maxQuantizer: inputFieldValueAsNumber( - form.quantizer, - options.maxQuantizer, - ), - speed: inputFieldValueAsNumber(form.speed, options.speed), + const lossless = options.maxQuantizer === 0 && options.minQuantizer === 0; + const minQuantizerValue = lossless ? defaultOptions.minQuantizer : options.minQuantizer; + const maxQuantizerValue = lossless ? defaultOptions.maxQuantizer : options.maxQuantizer; + const losslessAlpha = options.maxQuantizerAlpha === 0 && options.minQuantizerAlpha === 0; + const minQuantizerAlphaValue = losslessAlpha ? + defaultOptions.minQuantizerAlpha : options.minQuantizerAlpha; + const maxQuantizerAlphaValue = losslessAlpha ? + defaultOptions.maxQuantizerAlpha : options.maxQuantizerAlpha; + + // Create default form state from options + return { + options, + lossless, + losslessAlpha, + maxQuality: maxQuant - minQuantizerValue, + minQuality: maxQuant - maxQuantizerValue, + separateAlpha: options.maxQuantizer !== options.maxQuantizerAlpha || + options.minQuantizer !== options.minQuantizerAlpha, + maxAlphaQuality: maxQuant - minQuantizerAlphaValue, + minAlphaQuality: maxQuant - maxQuantizerAlphaValue, + grayscale: options.subsample === 0, + subsample: options.subsample === 0 || lossless ? defaultOptions.subsample : options.subsample, + tileRows: options.tileRowsLog2, + tileCols: options.tileColsLog2, + effort: maxSpeed - options.speed, }; - this.props.onChange(newOptions); } - render({ options }: Props) { + // The rest of the defaults are set in getDerivedStateFromProps + state: State = { + showAdvanced: false, + } as State; + + private _inputChangeCallbacks = new Map void>(); + + private _inputChange = (prop: keyof State, type: 'number' | 'boolean') => { + // Cache the callback for performance + if (!this._inputChangeCallbacks.has(prop)) { + this._inputChangeCallbacks.set(prop, (event: Event) => { + const formEl = event.target as HTMLInputElement | HTMLSelectElement; + const newVal = type === 'boolean' ? + 'checked' in formEl ? formEl.checked : !!formEl.value : + Number(formEl.value); + + const optionState = { + ...this.state, + [prop]: newVal, + }; + + const maxQuantizer = optionState.lossless ? 0 : (maxQuant - optionState.minQuality); + const minQuantizer = optionState.lossless ? 0 : (maxQuant - optionState.maxQuality); + + const newOptions: EncodeOptions = { + maxQuantizer, + minQuantizer, + maxQuantizerAlpha: optionState.separateAlpha ? + (optionState.losslessAlpha ? 0 : (maxQuant - optionState.minAlphaQuality)) : + maxQuantizer, + minQuantizerAlpha: optionState.separateAlpha ? + (optionState.losslessAlpha ? 0 : (maxQuant - optionState.maxAlphaQuality)) : + minQuantizer, + // Always set to 4:4:4 if lossless + subsample: optionState.grayscale ? 0 : optionState.lossless ? 3 : optionState.subsample, + tileColsLog2: optionState.tileCols, + tileRowsLog2: optionState.tileRows, + speed: maxSpeed - optionState.effort, + }; + + this.setState( + // Type cheating: I'm assuming that prop is present and is the correct type. + { [prop]: newVal, options: newOptions } as unknown as State, + ); + + this.props.onChange(newOptions); + }); + } + + return this._inputChangeCallbacks.get(prop)!; + } + + render( + _: Props, + { + effort, grayscale, lossless, losslessAlpha, maxAlphaQuality, maxQuality, minAlphaQuality, + minQuality, separateAlpha, showAdvanced, subsample, tileCols, tileRows, + }: State, + ) { return (

+ + + {!lossless && ( +
+
+ + Max quality: + +
+
+ + Min quality: + +
+
+ )} +
+ + + {separateAlpha && ( +
+ + + {!losslessAlpha && +
+
+ + Max alpha quality: + +
+
+ + Min alpha quality: + +
+
+ } +
+
+ )} +
+ + + {showAdvanced && +
+ + + {!grayscale && !lossless && + + } + +
+ + Log2 of tile rows: + +
+
+ + Log2 of tile cols: + +
+
+ } +
- Quantizer - -
-
- - Speed + Effort:
diff --git a/src/codecs/processor-worker/index.ts b/src/codecs/processor-worker/index.ts index 191717d2..a8701703 100644 --- a/src/codecs/processor-worker/index.ts +++ b/src/codecs/processor-worker/index.ts @@ -88,14 +88,14 @@ async function avifEncode( const { encode } = await import( /* webpackChunkName: "process-avif-enc" */ '../avif/encoder'); - return encode(data, options); + return timed('avifEncode', () => encode(data, options)); } async function avifDecode(data: ArrayBuffer): Promise { const { decode } = await import( /* webpackChunkName: "process-avif-dec" */ '../avif/decoder'); - return decode(data); + return timed('avifDencode', () => decode(data)); } const exports = {