From 8e3de3452f625819ee75ade84ba68f0b7fbf2390 Mon Sep 17 00:00:00 2001 From: lxsang Date: Sat, 22 Sep 2018 14:37:23 +0200 Subject: [PATCH] move wasm to new wasm.js repository --- Makefile | 6 -- test/Makefile | 2 +- test/viewer | Bin 15380 -> 20648 bytes test/viewer.c | 2 +- wasm/decoder.c | 212 --------------------------------------------- wasm/dep.sh | 39 --------- wasm/wvnc_asm.js | 4 - wasm/wvnc_asm.wasm | Bin 214094 -> 0 bytes wvnc.c | 27 +++++- 9 files changed, 27 insertions(+), 265 deletions(-) delete mode 100644 wasm/decoder.c delete mode 100755 wasm/dep.sh delete mode 100644 wasm/wvnc_asm.js delete mode 100644 wasm/wvnc_asm.wasm diff --git a/Makefile b/Makefile index 49c78d8..811b110 100644 --- a/Makefile +++ b/Makefile @@ -28,12 +28,6 @@ main: $(PLUGINSDEP) $(PLUGINS) #lib -ln -s $(PBUILDIRD)/libantd.$(EXT) . $(CC) $(PCFLAGS) $(PLUGINSDEP) $(PLUGINLIBS) -shared -o $(PBUILDIRD)/$(basename $@).$(EXT) -web: - emcc -o $(WEB_BUILD_PATH)/wvnc_asm.js -I wasm/libjpeg/ -I wasm/zlib wasm/decoder.c \ - wasm/libjpeg/.libs/libjpeg.a wasm/zlib/libz.a \ - -O3 -s ALLOW_MEMORY_GROWTH=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s \ - 'EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]' - clean: #libclean -rm -f *.o *.$(EXT) $(PBUILDIRD)/$(PLUGINS) diff --git a/test/Makefile b/test/Makefile index 9580cfb..c915346 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,6 +1,6 @@ LDFLAGS="-L/usr/local/opt/jpeg-turbo/lib" CPPFLAGS="-I/usr/local/opt/jpeg-turbo/include" -main: miniviewer +main: gcc viewer.c -D_REENTRANT $(CPPFLAGS) -I/usr/include/SDL2 $(LDFLAGS) -lSDL2 -lvncclient -o viewer miniviewer: diff --git a/test/viewer b/test/viewer index 3d1db1d1c56826be099b522fbbc3292033f23c51..244b3b1ec4da689e557010e646e112959a678dbc 100755 GIT binary patch literal 20648 zcmeHPeRx#WnZH4zfW!+Hlv=HWmHJf>SaAW3CXfpQCK^7XY*#xBlL<*3GI2f>tkK|1 z*4$p>rd!)hx3tZw+lPJ{w@Ra1F$g6Q-5Qi_*_L)AMZM#u-Lwz2u@5!-`@QGP&Mjn<}(`6`lsVLs2$H0ov)>p+b_AQ9f4AW~1E zz250)3`9S^P{~P8*1D2RHd?%7AP`R^x5RU-LVI7lLfM<88=0lE8K!7^=rVbfy+D09 z(iDz?Q)utoS1NnQv^~=7_uMnCexZ0G*3h_BD-_ym`-HN05eASCY44L~8-hR}*?3Pw zV{M?Ju`Vif{&?)ZTG^}CMo1Uh@Y?6NUJivoprU+ZxkrNWlP1p4JUyOst$ zMgs92+qOg_fu=<41MOwaaen9~O98aAK#+<8fvr)`G#O`a2J*9hWjYV(LVIB4o?td~6nvACF5H zD|@p%`Ml$*tDTbu0-@-(ZPCUoqp*HUwY|%;3P`=}Ewnebk5sO?`6jDkO?D3`)APiq z4T0vfdxlEcZ(duMV4sq4DKm^IkWE3_g*5x@F2j68M-5cK2AFK)9E1+bFt~NisRV}n zY~X4HJ}io18o~t#OAtQjX<2I+b*B-Y1D+27+l_H`G9J4+(y-;~+8vQv(0o3EzDk>MxU%X%;{zJtYwm@IicPY}Wo#`}#9xsbE1rznmdUs8f!ZX+!0TNw=G!V$!2^U*4f_e7!Q_-?Nw-w&%`s)0~0+k z(E}4bFwq15-5#j%+i!00r-ruso#N_`;Y@T4zikcoSx?h~-Q4ZBle_z@UGyRPtWGA5 zwd*>o+ibrIgx|4t`$JW`{Lc0L{`MtzUu+oe&Wj8qHDZ{pCi4{k0Y@~mWn4rB`qk85 zm#=>?tN*?6`d3kZZod8(=>p)%+>fZh{#5G!2Cp(wpR1_QUVQ4KtkzatjNhq33u<=x z?a7CoWM}GNk)7sh_xnJk#lpI!Ps<+6tIx|o*3L+Q~;jYX}?~jhY z;KM=fSe>@j?RLVQ@jInInTsyA9(9XQ!x!j<_?;!c6kdnB1U!sH+Y3{`-%HoWD;Dx%J$jcf+t_ueo;j+)h^n`F|w^L)W6GbcOJd3m`&;G zYv}|U#Y3vn?(ElsO1oos4z_jWV9TI}e!Fc`vo=z;`M%jOFZOnWsi~t;^tk3*-rmaxG$qOGW5uVpXTHceg+;it>qLSqavrM)I&v$=n+Aw(zTaB zWVSYAGU`5*D*YLT8x5CQwHLny%9)aS$!AYNq21^XlsM8?9-(Ok z>j|A2n5-JH*EKmcFiDi4WxsvUJ%NV$?LPNHq>Em2k|!%1YuKq8vVUUN9ILQj1bM8& zsXEp-Sr$%T#ii&7OspSao@1&E`cut=X!tzvP>0*44ipTyKc+@|=^;*D`(QUKG%$J? zN@s}@8(cLAiQhit)}r+C9$Loy7<9_!pvWQHdZohd|5EwyM^K4ZY^%S*?)?%3{pG)Z zPg+rqX2XQD#^-mEXw5l}HB{dAB4rhApJS(K`IL&!uDe{b|0bV(g=T*~pM9lfKk8vS z<+I2&_t>=Yx?5Ln?`Oev74}yj7QG}YbN3Wy)f}?TJ&(|6zTP8wdKYRvmXfd6A$rXt z?y2+Hi%UM_Lz23|XtVmv)<*PGk70~nj8%PHI-QozD zsim+NhSpwg5sO}fa;;K!zl-&ZIbfZpI@E`!S6$-ZmPdk(t+1y5@WRWjY( z5@q7+R+caNHTd$G2g?%3a<*K;*y`CQqNn@8;ANxNp) zt{SSaEjPRB8pTp_08LyZg<{fIowTb4uw&R&M>zSbjyhGYU3JXw+{iWIcglPaR${`J zn@_HpQyF@xvZx=K_PsGlVG%iN=J@Rw-Q5^8ZjtSJT^^7V1dX%$-5a+?S20C*>yC~zT`HsbA#Vm%%%Mv?m)a% zS(dZb<9-h^RONAxHOx3vWtOhWi&RJ*sJ>%=oq2IZZol+F<*Ur(l)NUhHQUX8XBjs; zZa404nb#?KiVDs$Y@hBCa5xC51HL=5GI9W&Eb9&gmPj+(7^WqIg<*;2RSYo+L=s7syH1!Y)A+=akx*6W#oOvNSV zDcxx~-Q`ltS28y$`MX?cPVqaObPjD@AoBhU))agDk4k<>$#Iyv(0TVmZ0P~y`$xrh zj|zwLv`jiPjof+t`6IDY@)-4b8rjKVyJpDmOvN5Gj1!{U;O5;t>@J5TIezurs+STt zw+7wg=dwX9bT3_?>6^bj>0i#?B-!RIpnurb=Sh`Uc(3O@5K^J$tio0EP!N18gvX078b98hj{D=`K7@5OL?LMW}tJDVc zi8K=iz6c3=?G@Bs%EYvJP==*>P?q0J97XOf)wa8&ZB{Sz$;s-k7yTOO--}ZT8Ghj2 zDH)cmmSTBMp)0Ad91Vn{T(#SEl!k1)a4Zi_E;965hYf8D?wA{*o>SG8Q?M;;_z0;3 zn=zVo3(Sl2#&brGk4@&J?sFqE;VzPPZw116J%Xum(oEAS;eO=)OxOozWcRO~LtPYM zY%mG1WhGtbOncwX4E=I+gk9BdrZ>TF)T`o^`MeUtY%|j#k5CJM+(&O!cSD^j#=Fa}Ekd(_M3qf4Y4r z_0Ab~RkvO9Z8J?DT<7Udxp1Cv46MlGmDtu3X8IfC&4npAWSGwA)?sH2yL-68SuveQ zX1Tr3jpNp=&3Zh;3FMv&LS{U@DR%^i3#X{^eA2gohba`|#^@A>xUtjogDU_(U*=e+ zS~$X!>D%0a8IQhgb30(!hQk7m1M>GU-DW)`&B!#vaH{lom_6|Lu137~ol*K|vIzf` zm1r-WCZ(4A3Q1paA64Eyob|PH#kZfn z_(!C8UV7q?aOIqx{c{-=UHlU;EyceKE{gAEl2`nLZi^JZQ;Ns-KCbu~Xng`j6t;eb z*}jRbFH^-gsNz56Eq-3M_)1lL`MBa++#(j=`T&|d)&ZUQ9e^6N-*eg;Jo1;Uflt-o zZHzAZ{}>a@cIp4eOLPYu0v8?d0uyfswBC=h-20%`*4mt{gml9fvX#g@i8Y@py#-k@ zJ7sQs1so2}&ZYe6#BAl1#Sny9bbHAsnc#48VzcZ;oGQ*;bL@rGcbaC{$)lP5O8r`; ze$@x6n|nmR&pLt(ETEqAI8=2cb$vgo!af0W1DH{fF`rst7NBHJ-2I}RPR zSn9<-U*ybiO0EUdy#l`@I3-sBrrvnlF1ZAtt@S=;-HZ(>Rce5d?arIQQ5zII7W?@o zXz@L5EqAV$o&$v!&1Tp6^PTVWmmss^PzbS$D#ixG{ex$dYl_!FnSIFt*M~}}J{{fvTQ|cZci?t{(ZjF+SKS)*?>x{2 zJ2*I%zrJ&*gJyAB_E{%^SSH@YXW{)D@51)JRAvgiN4v^3)6b8cSVJjys%@Px)6eAb zaL5dr>1XqJ9}%Z9Kkox{8uRkbUxrSHgJ`B7$K8zVz<8gXzg)NjX8NDUj@+U7*9rF( zGrix-yj%=Blxx_;r} zGOiR$JJ*wIg!`zOUhNs3`S^tq_3ePJmwS_NA2!oBdb!v|pxb7qFYnhED^kqO)oc4gCdwAf*Nm*H$*U91ebaR$3-wj z1lM^5zZAh_5iIZuPKdw|!JFPLc~b=nE%f|DZnu~$%ppVjTw zVG+DU!AV5e;ite8&iqQ@sl;z6d^RyBAaqKInF;tq#Lp}I5#py59wq(Uot>xjRhaESOT3Re?Y4J>b>RUFNwp7&o{dawocmQn_7ncD)7G(mn%F(yhP#qiLX%j)5I4k93-Bp z@N8n73uYXC<$wM}N z6ye>4-RDpB718Z7_fGML9N<3;})vVa$yX0aj(P8Mf*zP z;wNadYWNBi0fRNLGRfRq@>y`__JjZW;Ms86tRZ9)AKisphzpZ_D6wiJ^AxrocvrYU zS$N0((Roj!siX7uNZcdwa}xhR;=L00O8lb42P8fyalgceBz{HWA4xnQ@oN$vk@&|F zAC>s05+9TJ7ZMLjd|cua62B#}EAcxL4@vxMiH9Zrt;8oKepliViT@z+DT&{g*f@)A zYuo+j~hiO)gIH^Yl+Fn!85jLx%=cGQ0q%* z8qqeQexg>Qy+mIldYb6_MBgMjLexdX^_Te~(U}tFADYC zDKd0Z>baL>K1tL;MDL;gn?$RKUMAw9Ue9@xSxj__h-Yp6dDs^-A0ft1ek>esxHq^Z5;o>HM!i&|0pF7~8uL}!7_E!O?leR@yxbR# z#iB7^C>9PT@U^Tjo{ZH6L*UPgPx~Mpeg_-9=TEA{!i}}zSU9GX@C999y>)YiwLY+6 zWqG9)SXWbCxn|>E7?Fm?a4_~k2f$M?|k#Maq5%npK@4wIrMNon- zzdqw_g`!P6vX*E&U%wIsZb+c`Qs2Vu^A;}NG|kwEx~;4aCYJkd3;W{r(PX677i|hR z`hsF61d&hm)7;Z5ha%B<*cVO4PN%j$911twjZ!a}7r%t#phcg2_ZZK4feNVU9!_ry2j_Ea(H~S?)7f0Fr4&95aL!Ic<|-VT@WF zrNvTk?lXU*+Iz3OPKAm2v(`$5kgHHWAU9Z#Iby}y>CY|1^)3i=Ib^4f2zpc|fI_=fz zA)Ox4>5NaP_FbUUOLe+Hr%QFZLZ_8Fy;Y~b&~{v%{#K`_bb6-N+pN=1>olR$`*q4b zX5a`jaEP&|N`T`b|8@eGP`T$uARNBN0|-1+FGiqCh8u9nL!O!@0C@h_CWfmq#^mGX~3tys)x@j;y9R7STN9Um$S@L#?MLw5#3^>+rgCULi8v<%?V zQl27Ypd5E;u_hx+G&BkhZ)YK8{KvBLkMRRra4&~{Jm1ngmfeU|qZWQ#?L@-sSFP9( zj@=!ORfXg6;MTCwVZ=7+`mf~uUwHlM6&uw3A7z{KW%@>slKMOeuflLmM?q7b;5NA@ zB!9c+SA_A8@}oOEIa-ReXjLp6_7vWh<*yDW(1YsMi}`4-!y`n;Mq^}lW|{tAd|ZyM ztWX9D+Pl4s4N3iPZfU1GE2)k~A{MWc$nD8;Ikb8Dy;;e6>7kXpZ)A@C0zPgS$sWjO zSK}U57jZOSvLT$n6v3TaWJANf(z}CM1&GGA(DexY4XV<^9-bPEtf`T#q(-h)y#q1{ z6J`UNqUP<&WFp(^ZCS~x7_JMqB89|GT<3LWnblF$EF8-T zx|ATXDjM4sOq4g)T8*J7uLa|@wVP6w&WqMtaJfomH<`Bu8<@v4k$WZ;EG6C(Q@@u2 z%xzgL7!{IPVt_WkBb&SN2FJ=krf4SpLJGXTRnOw97-m__*)!7ZYOKE1sfWTo3|tr ziD+Y0u&D{dV{Aw!>Xv4SP59UH#vR*@FBR=DzFMSi(|SLQ>#*JsqTvv3$W}#y7}M4w zwMJm|vqjlC_t!;wpLi61Or@um*%!vG;y>;LL%u1}9awOllgOR5o1F z%WumJ;~8AOor6oa8Mw6L-5bAgAw7t%+DQLU(`B<2{i>!rH2u>ojgL5~&!1nI-#A~< z?`eAT97RvUWg+EVnm$+49k>`|wt1Q!xLnc8NaKf9-(p3tB|XhBvVUJPV)bur)X0Mw?>c*1gqZx*Y^0I#qW1h&>oj2vUE;Y=v@wYW}e*PRyx=hn6 zH0{?kK8+H2wWj$KH|-BEQtheJ@=aRapy}H+9RZDUSxtG;h(WU|^5E;1Jo>u@^u7Z6 z^#c0s0(zu?=2&^lyRd*>TtHu6K;Ke8f2x44FQ7kDKtEhS^B>l#|4~sqPZrQG70~}y zKo1qrqXqQ2=xMNW{XMUMURgl%Qx&g%sDQq=fNm?GI~9#pqMmOS(ERKM_H%N62Ii$- zE1-W`Ko1tsZUN0N)V%ga3TT$>l}}MLwA6D!0eyJ^T~eZpAARsAef}olLzs(j3Btz^E=Azl|2P7+BKf-^_{m7tKYj`^ z<|ELLoSC82>b})It1FSKv;$F|FwNS{Dq?NXJ{b*^n@FMBQ=0y zQ=N-Mxs#DZ_G~29r(?i-;s&-GfgQ#N`StQfGR~v-a^0dIqx-7eB(ThdhztU zYbwY$&8+jRyymRC9HcU(Lg-c`#w{52FR* z_y8fqk03yX69IfSQwwjs0WNodADYnT58$H;ylrFAsMj2s68L&yG3ty_-LPXD%7OO` zqcJZp+{kZt*5^Lr3GmCFTli&9Kz+DV8I8iad=Y^UB4DZ_dJpQsPa(W?cB_fsiEY&Q EPyP2@CIA2c literal 15380 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 diff --git a/test/viewer.c b/test/viewer.c index 8d280af..9228427 100644 --- a/test/viewer.c +++ b/test/viewer.c @@ -2,7 +2,7 @@ * @example SDLvncviewer.c */ -#include +#include #include #include diff --git a/wasm/decoder.c b/wasm/decoder.c deleted file mode 100644 index 9cf3407..0000000 --- a/wasm/decoder.c +++ /dev/null @@ -1,212 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "emscripten.h" -/* -* This file is the decoder for the wvnc data -* received on the client side, it will be complied -* to web assembly to be used on the browser -*/ - -typedef struct{ - uint8_t r; - uint8_t g; - uint8_t b; -} raw_pixel_t; -EMSCRIPTEN_KEEPALIVE -uint8_t* create_buffer(int size) { - return malloc(size); -} -/*destroy buffer*/ -EMSCRIPTEN_KEEPALIVE -void destroy_buffer(uint8_t* p) { - free(p); -} -int decode_zlib(uint8_t* in,int size_in, uint8_t* out, int size_out) -{ - z_stream dstream; - dstream.zalloc = Z_NULL; - dstream.zfree = Z_NULL; - dstream.opaque = Z_NULL; - dstream.next_in = in; - dstream.avail_in = size_in; - dstream.avail_out = size_out; - dstream.next_out = out; - inflateInit(&dstream); - inflate(&dstream, Z_FINISH); - inflateEnd(&dstream); - return dstream.total_out; -} - - -int decode_jpeg(uint8_t* in,int size_in, uint8_t* out) -{ - struct jpeg_decompress_struct cinfo = {0}; - struct jpeg_error_mgr jerror = {0}; - cinfo.err = jpeg_std_error(&jerror); - jpeg_create_decompress(&cinfo); - jpeg_mem_src(&cinfo, in, size_in); - // check if the jpeg is valid - int rc = jpeg_read_header(&cinfo, TRUE); - if (rc != 1) { - printf("Cannot read JPEG header"); - return 0; - } - //cinfo.out_color_space = JCS_RGB; - //cinfo.dct_method = JDCT_ISLOW; - jpeg_start_decompress(&cinfo); - int width = cinfo.output_width; - int height = cinfo.output_height; - int osize = width*height*3; - int row_stride = width * 3; - //printf("width %d, height %d %d\n", width, height, cinfo.output_components); - uint8_t * tmp = (uint8_t*) malloc(osize); - uint8_t * line_buffer[1]; - int index; - while( cinfo.output_scanline < height ){ - line_buffer[0] = tmp +(cinfo.output_scanline) * row_stride; - jpeg_read_scanlines(&cinfo, line_buffer, 1); - } - jpeg_finish_decompress(&cinfo); - jpeg_destroy_decompress(&cinfo); - for(int j = 0; j < height; j++) - { - for(int i = 0; i < width; i++) - { - index = j*width*4 + i*4; - memcpy(out + index, tmp + j*width*3 + i*3, 3); - *(out + index + 3) = 255; - } - } - //copy - //memcpy(out, tmp, osize); - //free - free(tmp); - return osize; -} - - -int decode_raw(uint8_t* in,int size, int depth, uint8_t* out) -{ - if(depth != 24 && depth != 16) - { - printf("Depth % d is not supported\n", depth); - return 0; - } - int components = depth/8; - int npixels = size / components; - int outsize = npixels*4; - unsigned int value = 0; - uint8_t* tmp = (uint8_t*) malloc(outsize); - raw_pixel_t px; - for(int i = 0; i < npixels; i++) - { - value = 0; - for(int j=0; j < components; j++ ) - value = (in[i * components + j] << (j*8)) | value ; - // lookup for pixel - - switch (depth) - { - case 24: - px.r = value & 0xFF; - px.g = (value >> 8) & 0xFF; - px.b = (value >> 16) & 0xFF; - break; - case 16: - px.r = (value & 0x1F) * (255 / 31); - px.g = ((value >> 5) & 0x3F) * (255 / 63); - px.b = ((value >> 11) & 0x1F) * (255 / 31); - break; - default: - break; - } - tmp[i*4] = px.r; - tmp[i*4+1] = px.g; - tmp[i*4+2] = px.b; - tmp[i*4+3] = 255; - } - memcpy(out, tmp, outsize); - free(tmp); - return outsize; -} - -void update_buffer(uint8_t* fb, uint8_t* data, int x, int y, int w, int h, int bw) -{ - //printf("update buffer\n"); - //copy line by line - uint8_t *src_ptr, *dest_ptr; - for(int j = 0; j < h; j++) - { - src_ptr = data + (j*w*4); - dest_ptr = fb + ((j+y)*bw*4 + x*4); - memcpy(dest_ptr, src_ptr, w*4); - } -} - -EMSCRIPTEN_KEEPALIVE -uint8_t* decode(uint8_t* data, int data_size, int depth, int size_out) -{ - uint8_t flag = data[9]; - //printf("x %d y %d w %d h %d flag %d\n",x,y,w,h,flag); - uint8_t* encoded_data = data + 10; - uint8_t* decoded_data = NULL; - int ret = 0; - if(flag == 0x0 && depth == 32) - { - return encoded_data; - } - else - { - decoded_data = (uint8_t*) malloc(size_out); - switch (flag) - { - case 0x0: // raw 24 or 16 bits - ret = decode_raw(encoded_data,data_size,depth, decoded_data); - break; - case 0x1: // jpeg data - ret = decode_jpeg(encoded_data, data_size, decoded_data); - break; - case 0x2: // zlib data - ret = decode_zlib(encoded_data, data_size, decoded_data, size_out); - if(ret > 0 && depth != 32) - ret = decode_raw(decoded_data,ret,depth, decoded_data); - break; - case 0x3: // jpeg and zlib data - ret = decode_zlib(encoded_data, data_size, decoded_data, size_out); - if(ret > 0) - ret = decode_jpeg(decoded_data, ret, decoded_data); - break; - default: - if(decoded_data) free(decoded_data); - return NULL; - } - // write decoded data to buffer - return decoded_data; - } -} - -/*decode the data format*/ -EMSCRIPTEN_KEEPALIVE -int update(uint8_t* fb, uint8_t* data, int data_size, int bw, int bh, int depth) -{ - int x,y,w,h; - uint8_t flag; - // data [0] is commad - x = data[1] | (data[2] << 8); - y = data[3] | (data[4] << 8); - w = data[5] | (data[6] << 8); - h = data[7] | (data[8] << 8); - flag = data[9]; - uint8_t* decoded_data = decode(data, data_size, depth, w*h*4); - if(decoded_data) - update_buffer(fb,decoded_data,x,y,w,h,bw); - if(flag != 0x0 || depth != 32) free(decoded_data); - else - printf("Cannot decode data\n"); - return 1; - -} diff --git a/wasm/dep.sh b/wasm/dep.sh deleted file mode 100755 index 073e49a..0000000 --- a/wasm/dep.sh +++ /dev/null @@ -1,39 +0,0 @@ -#! /bin/bash -# Make sure the emsdk is installed and worked -echo "Preparing libjpeg..." -if [ -d "libjpeg" ]; then - rm -r libjpeg -fi -if [ -d "zlib" ]; then - rm -r zlib -fi -wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz -mkdir libjpeg -tar xvzf jpegsrc.v9c.tar.gz -C ./libjpeg --strip-components=1 -rm jpegsrc.v9c.tar.gz -cd libjpeg -emconfigure ./configure -emmake make -## Using libjpeg-turbo -#git clone https://github.com/libjpeg-turbo/libjpeg-turbo -#mv libjpeg-turbo libjpeg -#cd libjpeg -#mkdir build -#cd build -#emcmake cmake ../ -#emmake make -cd ../ -echo "Preparinf Zlib..." -wget https://zlib.net/zlib-1.2.11.tar.gz -mkdir zlib -tar xvzf zlib-1.2.11.tar.gz -C ./zlib --strip-components=1 -rm zlib-1.2.11.tar.gz -cd zlib -emconfigure ./configure -os=`uname -s` -if [ "$os" = "Darwin" ]; then - sed -i -e 's/AR=libtool/AR=emar/g' Makefile - sed -i -e 's/ARFLAGS=-o/ARFLAGS=rc/g' Makefile -fi -# TODO modify make file using sed if macos -emmake make \ No newline at end of file diff --git a/wasm/wvnc_asm.js b/wasm/wvnc_asm.js deleted file mode 100644 index d6111bf..0000000 --- a/wasm/wvnc_asm.js +++ /dev/null @@ -1,4 +0,0 @@ -var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["quit"]=(function(status){process["exit"](status)});Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src}}else{scriptDirectory=self.location.href}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"debugger":(function(){debugger})};var functionPointers=new Array(0);var GLOBAL_BASE=1024;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,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;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[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 if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}function integrateWasmJS(){var wasmTextFile="wvnc_asm.wast";var wasmBinaryFile="wvnc_asm.wasm";var asmjsCodeFile="wvnc_asm.temp.asm.js";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile)}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=value;return value}function _jconst_fancy_upsample_avx2(){err("missing function: jconst_fancy_upsample_avx2");abort(-1)}function _jconst_fancy_upsample_sse2(){err("missing function: jconst_fancy_upsample_sse2");abort(-1)}function _jconst_idct_float_sse(){err("missing function: jconst_idct_float_sse");abort(-1)}function _jconst_idct_float_sse2(){err("missing function: jconst_idct_float_sse2");abort(-1)}function _jconst_idct_ifast_sse2(){err("missing function: jconst_idct_ifast_sse2");abort(-1)}function _jconst_idct_islow_avx2(){err("missing function: jconst_idct_islow_avx2");abort(-1)}function _jconst_idct_islow_sse2(){err("missing function: jconst_idct_islow_sse2");abort(-1)}function _jconst_idct_red_sse2(){err("missing function: jconst_idct_red_sse2");abort(-1)}function _jconst_merged_upsample_avx2(){err("missing function: jconst_merged_upsample_avx2");abort(-1)}function _jconst_merged_upsample_sse2(){err("missing function: jconst_merged_upsample_sse2");abort(-1)}function _jconst_ycc_rgb_convert_avx2(){err("missing function: jconst_ycc_rgb_convert_avx2");abort(-1)}function _jconst_ycc_rgb_convert_sse2(){err("missing function: jconst_ycc_rgb_convert_sse2");abort(-1)}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;Module["wasmTableSize"]=308;Module["wasmMaxTableSize"]=308;Module.asmGlobalArg={};Module.asmLibraryArg={"abort":abort,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"___buildEnvironment":___buildEnvironment,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall146":___syscall146,"___syscall54":___syscall54,"___syscall6":___syscall6,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_exit":_exit,"_getenv":_getenv,"_jpeg_simd_cpu_support":_jpeg_simd_cpu_support,"_jsimd_h2v1_extbgr_merged_upsample_avx2":_jsimd_h2v1_extbgr_merged_upsample_avx2,"_jsimd_h2v1_extbgr_merged_upsample_mmx":_jsimd_h2v1_extbgr_merged_upsample_mmx,"_jsimd_h2v1_extbgr_merged_upsample_sse2":_jsimd_h2v1_extbgr_merged_upsample_sse2,"_jsimd_h2v1_extbgrx_merged_upsample_avx2":_jsimd_h2v1_extbgrx_merged_upsample_avx2,"_jsimd_h2v1_extbgrx_merged_upsample_mmx":_jsimd_h2v1_extbgrx_merged_upsample_mmx,"_jsimd_h2v1_extbgrx_merged_upsample_sse2":_jsimd_h2v1_extbgrx_merged_upsample_sse2,"_jsimd_h2v1_extrgb_merged_upsample_avx2":_jsimd_h2v1_extrgb_merged_upsample_avx2,"_jsimd_h2v1_extrgb_merged_upsample_mmx":_jsimd_h2v1_extrgb_merged_upsample_mmx,"_jsimd_h2v1_extrgb_merged_upsample_sse2":_jsimd_h2v1_extrgb_merged_upsample_sse2,"_jsimd_h2v1_extrgbx_merged_upsample_avx2":_jsimd_h2v1_extrgbx_merged_upsample_avx2,"_jsimd_h2v1_extrgbx_merged_upsample_mmx":_jsimd_h2v1_extrgbx_merged_upsample_mmx,"_jsimd_h2v1_extrgbx_merged_upsample_sse2":_jsimd_h2v1_extrgbx_merged_upsample_sse2,"_jsimd_h2v1_extxbgr_merged_upsample_avx2":_jsimd_h2v1_extxbgr_merged_upsample_avx2,"_jsimd_h2v1_extxbgr_merged_upsample_mmx":_jsimd_h2v1_extxbgr_merged_upsample_mmx,"_jsimd_h2v1_extxbgr_merged_upsample_sse2":_jsimd_h2v1_extxbgr_merged_upsample_sse2,"_jsimd_h2v1_extxrgb_merged_upsample_avx2":_jsimd_h2v1_extxrgb_merged_upsample_avx2,"_jsimd_h2v1_extxrgb_merged_upsample_mmx":_jsimd_h2v1_extxrgb_merged_upsample_mmx,"_jsimd_h2v1_extxrgb_merged_upsample_sse2":_jsimd_h2v1_extxrgb_merged_upsample_sse2,"_jsimd_h2v1_fancy_upsample_avx2":_jsimd_h2v1_fancy_upsample_avx2,"_jsimd_h2v1_fancy_upsample_mmx":_jsimd_h2v1_fancy_upsample_mmx,"_jsimd_h2v1_fancy_upsample_sse2":_jsimd_h2v1_fancy_upsample_sse2,"_jsimd_h2v1_merged_upsample_avx2":_jsimd_h2v1_merged_upsample_avx2,"_jsimd_h2v1_merged_upsample_mmx":_jsimd_h2v1_merged_upsample_mmx,"_jsimd_h2v1_merged_upsample_sse2":_jsimd_h2v1_merged_upsample_sse2,"_jsimd_h2v1_upsample_avx2":_jsimd_h2v1_upsample_avx2,"_jsimd_h2v1_upsample_mmx":_jsimd_h2v1_upsample_mmx,"_jsimd_h2v1_upsample_sse2":_jsimd_h2v1_upsample_sse2,"_jsimd_h2v2_extbgr_merged_upsample_avx2":_jsimd_h2v2_extbgr_merged_upsample_avx2,"_jsimd_h2v2_extbgr_merged_upsample_mmx":_jsimd_h2v2_extbgr_merged_upsample_mmx,"_jsimd_h2v2_extbgr_merged_upsample_sse2":_jsimd_h2v2_extbgr_merged_upsample_sse2,"_jsimd_h2v2_extbgrx_merged_upsample_avx2":_jsimd_h2v2_extbgrx_merged_upsample_avx2,"_jsimd_h2v2_extbgrx_merged_upsample_mmx":_jsimd_h2v2_extbgrx_merged_upsample_mmx,"_jsimd_h2v2_extbgrx_merged_upsample_sse2":_jsimd_h2v2_extbgrx_merged_upsample_sse2,"_jsimd_h2v2_extrgb_merged_upsample_avx2":_jsimd_h2v2_extrgb_merged_upsample_avx2,"_jsimd_h2v2_extrgb_merged_upsample_mmx":_jsimd_h2v2_extrgb_merged_upsample_mmx,"_jsimd_h2v2_extrgb_merged_upsample_sse2":_jsimd_h2v2_extrgb_merged_upsample_sse2,"_jsimd_h2v2_extrgbx_merged_upsample_avx2":_jsimd_h2v2_extrgbx_merged_upsample_avx2,"_jsimd_h2v2_extrgbx_merged_upsample_mmx":_jsimd_h2v2_extrgbx_merged_upsample_mmx,"_jsimd_h2v2_extrgbx_merged_upsample_sse2":_jsimd_h2v2_extrgbx_merged_upsample_sse2,"_jsimd_h2v2_extxbgr_merged_upsample_avx2":_jsimd_h2v2_extxbgr_merged_upsample_avx2,"_jsimd_h2v2_extxbgr_merged_upsample_mmx":_jsimd_h2v2_extxbgr_merged_upsample_mmx,"_jsimd_h2v2_extxbgr_merged_upsample_sse2":_jsimd_h2v2_extxbgr_merged_upsample_sse2,"_jsimd_h2v2_extxrgb_merged_upsample_avx2":_jsimd_h2v2_extxrgb_merged_upsample_avx2,"_jsimd_h2v2_extxrgb_merged_upsample_mmx":_jsimd_h2v2_extxrgb_merged_upsample_mmx,"_jsimd_h2v2_extxrgb_merged_upsample_sse2":_jsimd_h2v2_extxrgb_merged_upsample_sse2,"_jsimd_h2v2_fancy_upsample_avx2":_jsimd_h2v2_fancy_upsample_avx2,"_jsimd_h2v2_fancy_upsample_mmx":_jsimd_h2v2_fancy_upsample_mmx,"_jsimd_h2v2_fancy_upsample_sse2":_jsimd_h2v2_fancy_upsample_sse2,"_jsimd_h2v2_merged_upsample_avx2":_jsimd_h2v2_merged_upsample_avx2,"_jsimd_h2v2_merged_upsample_mmx":_jsimd_h2v2_merged_upsample_mmx,"_jsimd_h2v2_merged_upsample_sse2":_jsimd_h2v2_merged_upsample_sse2,"_jsimd_h2v2_upsample_avx2":_jsimd_h2v2_upsample_avx2,"_jsimd_h2v2_upsample_mmx":_jsimd_h2v2_upsample_mmx,"_jsimd_h2v2_upsample_sse2":_jsimd_h2v2_upsample_sse2,"_jsimd_idct_2x2_mmx":_jsimd_idct_2x2_mmx,"_jsimd_idct_2x2_sse2":_jsimd_idct_2x2_sse2,"_jsimd_idct_4x4_mmx":_jsimd_idct_4x4_mmx,"_jsimd_idct_4x4_sse2":_jsimd_idct_4x4_sse2,"_jsimd_idct_float_3dnow":_jsimd_idct_float_3dnow,"_jsimd_idct_float_sse":_jsimd_idct_float_sse,"_jsimd_idct_float_sse2":_jsimd_idct_float_sse2,"_jsimd_idct_ifast_mmx":_jsimd_idct_ifast_mmx,"_jsimd_idct_ifast_sse2":_jsimd_idct_ifast_sse2,"_jsimd_idct_islow_avx2":_jsimd_idct_islow_avx2,"_jsimd_idct_islow_mmx":_jsimd_idct_islow_mmx,"_jsimd_idct_islow_sse2":_jsimd_idct_islow_sse2,"_jsimd_ycc_extbgr_convert_avx2":_jsimd_ycc_extbgr_convert_avx2,"_jsimd_ycc_extbgr_convert_mmx":_jsimd_ycc_extbgr_convert_mmx,"_jsimd_ycc_extbgr_convert_sse2":_jsimd_ycc_extbgr_convert_sse2,"_jsimd_ycc_extbgrx_convert_avx2":_jsimd_ycc_extbgrx_convert_avx2,"_jsimd_ycc_extbgrx_convert_mmx":_jsimd_ycc_extbgrx_convert_mmx,"_jsimd_ycc_extbgrx_convert_sse2":_jsimd_ycc_extbgrx_convert_sse2,"_jsimd_ycc_extrgb_convert_avx2":_jsimd_ycc_extrgb_convert_avx2,"_jsimd_ycc_extrgb_convert_mmx":_jsimd_ycc_extrgb_convert_mmx,"_jsimd_ycc_extrgb_convert_sse2":_jsimd_ycc_extrgb_convert_sse2,"_jsimd_ycc_extrgbx_convert_avx2":_jsimd_ycc_extrgbx_convert_avx2,"_jsimd_ycc_extrgbx_convert_mmx":_jsimd_ycc_extrgbx_convert_mmx,"_jsimd_ycc_extrgbx_convert_sse2":_jsimd_ycc_extrgbx_convert_sse2,"_jsimd_ycc_extxbgr_convert_avx2":_jsimd_ycc_extxbgr_convert_avx2,"_jsimd_ycc_extxbgr_convert_mmx":_jsimd_ycc_extxbgr_convert_mmx,"_jsimd_ycc_extxbgr_convert_sse2":_jsimd_ycc_extxbgr_convert_sse2,"_jsimd_ycc_extxrgb_convert_avx2":_jsimd_ycc_extxrgb_convert_avx2,"_jsimd_ycc_extxrgb_convert_mmx":_jsimd_ycc_extxrgb_convert_mmx,"_jsimd_ycc_extxrgb_convert_sse2":_jsimd_ycc_extxrgb_convert_sse2,"_jsimd_ycc_rgb_convert_avx2":_jsimd_ycc_rgb_convert_avx2,"_jsimd_ycc_rgb_convert_mmx":_jsimd_ycc_rgb_convert_mmx,"_jsimd_ycc_rgb_convert_sse2":_jsimd_ycc_rgb_convert_sse2,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"STACKTOP":STACKTOP,"_jconst_fancy_upsample_avx2":_jconst_fancy_upsample_avx2,"_jconst_fancy_upsample_sse2":_jconst_fancy_upsample_sse2,"_jconst_idct_float_sse":_jconst_idct_float_sse,"_jconst_idct_float_sse2":_jconst_idct_float_sse2,"_jconst_idct_ifast_sse2":_jconst_idct_ifast_sse2,"_jconst_idct_islow_avx2":_jconst_idct_islow_avx2,"_jconst_idct_islow_sse2":_jconst_idct_islow_sse2,"_jconst_idct_red_sse2":_jconst_idct_red_sse2,"_jconst_merged_upsample_avx2":_jconst_merged_upsample_avx2,"_jconst_merged_upsample_sse2":_jconst_merged_upsample_sse2,"_jconst_ycc_rgb_convert_avx2":_jconst_ycc_rgb_convert_avx2,"_jconst_ycc_rgb_convert_sse2":_jconst_ycc_rgb_convert_sse2};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=(function(){return Module["asm"]["___emscripten_environ_constructor"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){return Module["asm"]["___errno_location"].apply(null,arguments)});var _create_buffer=Module["_create_buffer"]=(function(){return Module["asm"]["_create_buffer"].apply(null,arguments)});var _destroy_buffer=Module["_destroy_buffer"]=(function(){return Module["asm"]["_destroy_buffer"].apply(null,arguments)});var _free=Module["_free"]=(function(){return Module["asm"]["_free"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){return Module["asm"]["_malloc"].apply(null,arguments)});var _update=Module["_update"]=(function(){return Module["asm"]["_update"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){return Module["asm"]["stackAlloc"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){return Module["asm"]["stackRestore"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){return Module["asm"]["stackSave"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){return Module["asm"]["dynCall_vi"].apply(null,arguments)});Module["asm"]=asm;Module["cwrap"]=cwrap;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}Module["quit"](status,new ExitStatus(status))}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run() - - - diff --git a/wasm/wvnc_asm.wasm b/wasm/wvnc_asm.wasm deleted file mode 100644 index 553d9ecbe2b42bdc8af706d7dc8d10005070a579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214094 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

rNTI@!C^2Sk`~~i1xnQjy$S)#)gX; zw;T26-1ejYnB8H_+{}&}rP8A}{&8}nu`eYy+N3G5@wolsV>f*&w#oRtW8*gaqrd6q zSNY>7%<(tdVjX|;EkE=oZ1t$O<;3rLTNb|T-4nEYZr0X`?RVN{M6mPZXE)tt%G;xM zow~*PyH7i2$R5*QUTcqSuNg3X#t!|aZ#T4c#>|VGXKdfuwA~InHEh4*E!01$ZskrJ z?YZa9gSOvmm-Dunz3a~>d~Ubjj@^6r>o(kHk8e;$+d9wgHGj7+%)VykoX~uFkh+9Ww8ba62@D_Ei@eq}+EC_r0%AVe)Be(Gm<%j`>F_{v^I%y5`FnXonKH~1a^W@Zx@^0G^*e;a-u zOJFF$xV!`t)!VJ=@_?}@igVvR4^Cr=iK52%r%#j3!r|e_Y&rp{+ zkibxuy_Q(;KAkX?^so7zAv*JU0z+Z;V(Q=nd5;Uq#p`ZeCGJ$n&Q2eKE2_&;NUZjLiLfo{_xWDtZY_41jR@9=*FX@=_Tk3#$(K$>Ab`yFDz z>omd?(!b<;;eQ_jszLS}A^yKenjt>>e2D);NTUv9ZzmQ#olDrB^hbOz{EKG#(Es~F z{2xvlJY*jX@h_MTA^mM)*dr_^Od|a%?}h(83GJjW z2=RY3>G7nW2=RXq>0zXAAQryPBupp$JH8kGd*lB{Lj3Pfo}uKwhFJMeB}^v$4&ST1 zy$ORze?7$i@uasP{alFuF47}N|A4rja1LQ6=|Azk@Yx&xKM>-7U-Fd5|1IJe;bg+r zq<_Kp!pCgF0McIx@qaAo%}M_(#D53r;iPXS7Cg@)%pm=Hz8C&`yrO_ z#De$fgsG%|!}r4f=Lu_({+|&4Cy?HX^v^^5A4+;d(my0_B%DXsf%M0p!vFVCzS=vN zP$d7A#6IC9LO}X;-m5)(5&Dx}(vAOr8sh(8-mlO5<-}_5mk8UE{($d=&))d|(GdR! zkY^q8f0tPBI*l-e^so3{_}_;xnDjS8{C|=3mZV<@@qY;Ek)-b+ZXldX*q-#C`Cj<% zjsG7C@xLE=hLHbiV&y-Dunp9h~$h<&$x*J?Y0kUZy znYQFf-XxlyPsaHEB);#j@7tS`X?>sSo1Clf=j4+KeIIX4j?wp{TUcP=`}(%zJ@!4? zKH5nNO(lb_Qiq<>fNs*vB(fiq#kH9bZotHDg13#gi?^S5xOa+orFWnAx)*~C^)KJ; zubFT4*Ao8qp(OpahJSsTYU(fVZSVbv?|t+k*9PfI4Sd<3iR&0I@aB3adG}zPJqaz| zkNXKf{8{ublbZlV96l z<}KMD9)H6L>5;d+b;01f&)+|P>)`hb*LO@`@PiLt3hp}fi%&g2;8$<_{E(e)ernZ2 zr~UMl-7o6uvtn82{>T1l-;aO&$N^{VxVPW>Tvuwp{kClS==Tkob001oI^pyAgJ-@G z%=y{E1@o?W;*Izg)1FFf_wi{BPj=p1_pOhX-MmTHMK^B!^don?FzHWsUi*62vl|_; z_sdfrZ+QB}y|#SfyVs6>Zr#njmv&mb(=!jZ&0Tr-&8u!I4!M8%?qC1P?TxZ{p za$9Uz=FH?5ZhWr(!J+TuZaCxk!$vjFJZR7F4xW3@mLm_m<^15qBU1}r@b4@N@UQ{=j=yWlrAX{-)nQ_}uje%zEe6 zmS5g>*V)IP`Gdc_JoxAPZaeb%z8@U_({m1(`P85HoO|Q;KiTQ#%@=uhUisSSJDv)@ z_415ozVhsrhur_fRexUf^iMn9Ie44DJa_2Wsb|jn-pbqNJb(De#N=NLj&J;hnRVZJ zpMYgy?j1**Xf1&N7lLdpgoqKc32_%)PX;^^o_YcY5dbmpTFpl=hiP> zwDS6!mOb-Ozb%*VbyCAk8&25!hqr#O>-H6eQ*QgsEz9rzM*VBI#J}<64U0CL_OoAp z|EMSbr|-HiBu;62@$i=1ey^W8VgIFDbsW;LY<9=7xyKvd_@7U*OV+#2tGnTn^cN>D zX?pL;D>G*t^uE8=U++yFyw4u{{^8Mi2P|GNuB-oBsm?=>9Qf2^R~I`)_y-b@A^4!U-|UYCoFm5^84?7cKpuozr5q`=H2ncyglyx z_Rmu{Puy1M9y3;f(mWImae~``(@N@@_BBTlVgGhmJYsu7jtZvwZHO z15P>c&dZ)WY@Knh9klaTj;enwJ}r00587g-QR^mmyKBPj4-Cuw@Wu;g-?TxZWBJ}! zfAY+|V;*05^Vyd?H)8O0FMaO%d-wn5y6^Az>x-}KIHGRJA+c*x*^4KRYy8z|^U@3Z z?BOL(o^khAT93W$wd*#x;kfYwZ>j(0c~4&0aM#a%aqGJ;9$$R)T- zKKQzQ|M=5SI_FM#ysPc#*Xl0&?UN19?0QOKhkKXDH=DceysQ7vHfQDb(+=MDg`*DL zYDUKs*S$FV>E{m2y*%l?3Cs+yyYrd{F1h2S6Cb~E+B=`zJbKXkKm6fY_ul@a(My)^ z^6e{c8k!up^7bXEXMVi?9xv^B_q^wZY%Gk zH}K`;>~r6ZF(|PPG-hD`llL9B(S5s&+#vBl*Zxyh9reZ2ub#d8LthPc%$)Vy!`t3* z?-OUe{q9GPKDX-i`WckXV_ zT(@ECn>TOz%*_`K`s%5tB=@>#;K}XRc;9^CqmkEtwPahr!e)#tLGkd&0XJq_3huiweo|vho17%eFxn5!1Ld^Zl8UAb?MZ} z!yfBA?BI{*A9-Epn9bguJ-jd?o6a3Feo)H?!Q#@PS~9;Vppkf-nZ+rE1#Zt?wMa}{OSd>E_&vr=4&2% z=*f>>{q>SZKl=UN&+NN!@SDeUzI5}hlP*1V$G!G!X>991q;J#n^T!YUW-w&St2;kF z;LX`@9=}fZ(LMGbzjB8wue-p1?b5T_i;rEs@tlwE9RB@Rhkoz3D<|GG@|2cKyKc;$ z{@tO|ANgh9T~@9?^@KkkbkqT_eR#~oQMXPXI&RUx?BGp?wOwpF4f$`7a%C z%$RpinDf^U-hAusdq4i`@fWQ8*_M|*`q)R~&N}6e^abBIde=K|*zAC-mu+{^DHH0h zxv2EWM>l8BeDu2fj{Cg(g~qN`Q-3`1xkJurym!$yEwev}4GDgE&-|`?76<>Ywl4vP z>TTm5CHr1Vk)~`Rp#`Zhc4ZBbD6=w*nK6s4(n2bQq|k;|w8)YWNu-j>R-wgG5^WL{ zN`3b^GsOSj`@Y}xUDr34Gt09-_xii<^PCE8v1v9)5$e{7uP(%#i;h+-n-hx*-dO78 zpV|{@(b`J$Qg+gj-yCTmaY9E?g`0g9=8SL z0f#pO`BTnTW-Iz7M(e3(q-z%ERCf)hw~ZP<75G(e(W7M$s2@ zRh1U?%L^}GVy&gj4%HXF+R3#2S|8|Q5M><^n(sq&Y#ynV?(S@SQ21atF1op6ja>2- zah14h_m~+c_u)#Tt$kFc3e$|{+%}ch-z_Dz&^*=2Z)&z%WW`9h`_5W|{k&?Uotp+# zQcq?|6}(86zo3Y5d*h|=^z$fz(A?r0{%Dp{r``I<5$7X1&08KTJs?bvjni3In!GHr zr*vL@YlhH=fyhmlE6FzWL|d9}hAX$nK+ZT@SX3pzO;tpjY%1Foo|$~kwk(07n0Qu0 zEA~c5S?!loarN&BZKD+`eci1$I?HDKtk0A*jfz!|%uh5eQLSeV$=6a>T6ddAgpO`3 z3?#o8^op!D6m|U+Vr2V0FGsZabGqEAr4LMFS)-~+i2fS}R0_}^M^D{QZaw8imZFyNC&OUbu((oKn*Q6E^F`YEA)i&PZ%rojrHZ@&y zl|xU@)12$8d`Vna@i_kDoXYl#3SSGUv+sRbF84e2`}Fhbd9sQ2Y?&EetK?Pme$9x8 zFP`bp6)~&B+QF!KQNoJ&Lp3W)hQy6meX=wakB%`}XI!z0>^x<)=d4WzjBO_j4XU0k z7sysv7Jbu0zu?Icy?234OI`}dEKnBZJyTj2OKKN9eSe!oZCmLIb9()AwI)G(Z*EeuZEvA4H^F)W*Bq>h*oxe4hOJ z28nci>H) zZ;obGw^VmoS}u8rV|z-QX?5F~&poi;!r8yy&2P$5cat)%hv?Iy^#>}3TuUz)uX{CP ztMik{a+jVJue{n_u^VGPQa0r6IqSJB@x9N~ADZ4?R*X$Sx|cWaP+Z;`EP`Sl&S|Qs(kDeDXy%Qp%Ti3yxIp=r}xdw=BKxa%5WabfXie!beW3G73|tPYXS| zrd0pC??8Q#E2T9Sy^DeuM6=v;`WIc(=sDG86avhuXNRV=2n11%+*0A?EYvnYr$X#Mw zR=acglETjZOx^cO&xg2k&*Dsr&fV4=${4UPK6PPq>zR`&<)`b}w+r9S7P?xVX?AVj z!(BxZ&mZQm%#$u4NZaMPllSNPFK8~^Y%70V=$mV?{)xnrtFdimQ5{M*o^A5F`Egll zIimk$zp~=}_e3vzx>6|TkwQpV^103M#pXb@5~JpmeG9Kv$2y5@BX!(h2<#DPF24D6 z&C8a6FH1w)JJ!n(J<~mAJCEp{>zR=*GZH*>$^2f$miEh;cl|6xSX_0+qle7xmygIR z$m;wkI%}F%udqj>r*4jU0{iqO?48^in+Oq;D@!sq-iuc#^jj%bkJ*z?HFDOK*!&^o z)#nYn_oTd8-LNNye6_>)rI%Aeo$11*p)oRD?_P&`u9Ix}Xy$*@W$4t9_UGH_DYjaA z3%r~>(q4UI*lkY|`FeL-rr8sPil0G__36vCi&WyO6_V34wrgq3wi&&?6^om4C}B|M zdyj3_YR?(RJx#Mzt{t4K-}L>|zJR)r8PZwzFLerUFOT-E5^7{-Y$}?i)V-lNdvH~| zy#4OCl?@#`BB@fkwOayhL#s|pOV-}?&tq%e6~xB~KPX0L?OoZRO-w>SH(NDOP#9-K!{n)+RRCFS6;sJ*7Ti61?aG~IkH zuj&gANwjAPi>>`;9e10;)c8D4iw!H+ zPMzDDf?ZoP7`8aawxU8{wDBAT7ofB$`Fr>ZEvJ;^be}K%DsQIE4s`I1Z2lVGKzRH9 zTHEGz@uHQ6y@e62))@b?`DOL*^xO9)tS9Q>ho3GGOba-64&W{hqB5qX<5t8Hc|;Ww}VT$(;_1f;rlD6j&;0-eSbm! zSr40Jg}&?+mq#CLlC={0!3n2SR6dE_<}tAp4?S ztgKbH=~V2_sM3(cj@Q$_d2bxu&})}!;@&@BXcx^AZ}RxUqy2a4vJE4RaND2ys8`Vo z_JwSH`sw~{#?!eQ#PUvcb}7#o*cqO+wwYQxJzpyHqW7uFk`;F%1$O+(KJn(LysEfC zh5_A0DL!*1C8jd?naQFy#v;3tro*3i3W^@-F3#IxCwWGBah{^BNu!0%2KtYxZ_j(r zC;GX}%g%ie@koMm7+*r^7n;_F=zplNUh*d?{Gy|xF4u*FZqH^03?}pv&n-_Q9XTWQ zeD9L*7sY2gp7biGG`8*)y=Jc+nYZ=E+hQHzgE!|U&MlH51>|DC43q@hMwjE-<~)16 zE$C&}`@zSBE>TUp?@p(st|tX%Rg4mbBVx%lA7%)6I}wFwts~N_iE$#5Usuwx_w1=M zo1XaMx=#BAvsO**YFI1y*rri(_vksX!ocN)StI88skG;%HBT><4Vx`#p}n?h_vXHM zDp_~2Vf6;}R=rCuZ5ZQw%`Q7`*5hZ+zdBgBzTmb>-Ss0!i*KBR$D4}NHc#6taz~;y zKTo_@RhO}KkEg%A>@ED$Q9#U>s>e zM?NYFoZGTXWboEk>DwOU+}1mCMZM1Z%ZuOrEZMu2@N#au{4*W915H~8emu4(JLKa% zjSF2Kohid`9+&F9TGM_Gx4Pv>^Vx>mK}}Bwe^^j^1D4TSe_r<6YyHf(xZYAwhrM*_ z+&34*>^HxZ+*;#2EqIm26x@Y!aT%E!32cmqf1w(dvAdvz@>ui{zAJrG+pv^oYfWly zed>a{%~@AB6s(@L_^Ra2q8r{TE3VTne=Lr|9=lm^ZR)jG5}droWAC2WtT@>idPVTL zx;*>E%&6Byak;~!mC=$x0VWXvURhmIb>c~)zfX!`ax}IHr{#T?PO{u1a;8yP;EO+1 zsPfl$f``uzvS00Nnn5rUs;}i zLwuq3Rj)(d1p$JU&A&4X>+AFvwWjUg*p@T*IH@xC1M!PGH{i^PDM3kMCq#v^-%A;o zvV{G1Ps4ajKXP-;u2;noGq&Vu=SW;rG&=bP`ijJ#x6hAhYJA-P_?5Z; z%YvbK&!Xr%%V$3PR-(Rw$@%Mbdo5{iF8Pd(uv=bs#Le8QqIM-RYfLj zklBRq!yQ_j)9h|o*gZojwXk_wRCMw##ncVQG1&^aIwQ}s4Qh{dhx+*ZrqPrh<4oHh zdP$`niB>&*AYJ}-X1+DHJUbNM-_v=%XQ2LVRa=zmv+8`Zk5A48OY8LajKBvALztt~ z75afWSS_zUabeL#a!N))?bZeZcYK8NKQi5d2Ls7^rCI~uPwQ7++ozPsJt&;9Y*u>N z52@(5>uT9;;j8ldjMxL=zXN(~%W>6;+dSK}R(%e4n$}B*w5)W}+4I~@>CR#KSb;dH zQnT|aJyAD}S}Tn*swL-_4%&+)XC_RKOMc}203&MEtZz#nA?y$BbiIGQ)W_{i22Fl% zoaxiVWT}+4=2Yjq53*%HbdEHB9jQ%X5t_XN!@K92xfQl;aEeZ!DJADAEw3_L)rk3Q zwF>Syc{DI{Dy1bPi8*H!V$)wO&3rIlt8CQwvTEm*tETmz(&eIbVnp+4 zHMXi3>s{sF{fM;Id_@lR*EJ3QW}s?YG*?uSBPge}e64HQmvy#r1>xj2rf+1Q{@d<> zU%y5xZ$7C{-1?w4V|7%l!N{>h;nKV^x3H{C@`{yFscRRcW{Zgyj?~EH)b8Ef=i_8O zNRtX`HGRmblsYirC1>#tr!wUhjd`mj6t^SApxGu~r(5V8rm(t9F*-UJ7dyw_t8}A9 zXiusat+iEN$4ObjAab*YqRt5ujMB@JRE%6kl)mf!9Kyjvg{}=R2dih^?i=*ztIRz7 ztu^^cj&NCTky2dN3H`Rf-H-sd9~l0ziD`Rj$VZXUX|1)G(q_=Py;?W}!hfQ}0C~Zb z{DC)$*_CJYq7(fz(=*h&s&k4*+tP=h4m>cf>lxj$BRjC{Xuj8Ie!8g1#b~4Li&u(oUMMBC+s`T0Jkl+Ds(biIg*~Bm=T4*Qd8sOcn+l{d zPhOBue(}Z)qxjQF->aEGIQl5uwZ*Q}X_oUyL>vM%xIj-F+%E$~tdIX4d~ykBu@lP0WvE)~l9KYvqT`yRBDl91V?lK@Kde zj`SM*rxNacouYGwNg^#tu3~9AV&dL5tCiHxFz0sF*vvZ} zs;ulgS5r|}{L-9{_~Qx}+bd^N3%|-O|8j5o_tf9AdFtn7*!GF?tGs5+_@$>Zvp7Ct zRz#PBk%M)|iiAbYD{BtL8;cK>m|A{XWfBuDzN*4_-RddMWP?q!JPl85V=RAGWw1;k zTR`9AX0+asCk0EI0^co_6?mx{_~xKmc0#5`pZ+g(osBgr1PA*C85&!#-A5P9R~?Yo z3cI>c`+D0v&7Z#33r)m=b%K=!7Zrq5E&h7%n6BaJ%gkeO6~Ufwzq6G$#v(a9WYu>xUyY@7$k3s*S<*c?Y-qfKHvP9M7r^s zvS8|UzYc1gZF4QwPX5%awXX9V*CcYoo!W>$9hF3D?Y)W)Ii$WkXMOuvs*TX+D^_NX z-z;~j-oiaxVreGr$u_s^*0R`tV6I!gzq9+&DSjT@GL!X1PeomaDh{kOzEJACb;c`~ z^2jG%uU7PI#JaX`pnQz+Ji8~)=Y8TbZ_OW5H!-ZdHec2a>Rhh4qvLyU(W|_=Pp{eM zTDw;jc)$JC8u+HzZ%J2#+0!JBaVmebv?bac|T6iw3dpsNOe5 zrx$Bj22UKWq*2@ol+o=<)35KB?y>uUE7Me=Tb-NZ-@$ShHKw62THU& z&8GA{?rXXBL??e|J>jfiL&l?}P2J3ZM%6h!)ti3F+&*zw`R~il#Y_rj+O;UP(4P81ysr zkhb~aq~3+Ilh2!+NFljhJhI^3m%|-9s?*Ev4y8q2t~+5gJ^AEF_^H%FhU(GKY15DE zm##TB(6B9T-*UYJYc~tWOLlHbsM}AC-Es26e)I3o_X*nV+IvT(FzOg-?=DZNn>&NB#i*HbP~1Rq^IOCQd8AGY<1rrg@gj7xHt zF5gkh?BA(ye(8JNvt0L(b48}Oj3Le2r;IHI&TJjMaJoF@WZ`Xg{Z*maZ?BnUmKW`M zxG(?VbBO}!yp?%&(uCaoWcSkM1^(CNZ8sOYeiJH5JfUCK7JK!EQb*KHuT9U&QfwZhmpH*{G!Y>cYNlB2KZ48y%!(NC2#Pdb9XT zK+DUH_RyuCM49!@vpv##&gqSe$fVCOzcduwzNO-x-`&j1T$YH%!$%DDBbT=`bz~Lf zP0tqn*rQONHm9yf<1{NjqNaS}hyu+;O!o!O1Ih=|aj&UkQ+Udy()f!scGp>)?%$|b7Zj~8KIFx1E z^Zob?&($hfrk?t94_@1M>U-0Skh*|N_p_wSw+nX)RryA5%3wBjE6pkz%r4$wFWVL-_=(~ix&E1Hcbv!OB*jg#|x=cyib55w*6 zXuh)4JNN#_4cAt>ziHTH;~bg$`@`%fgq8DY&-Pf0-doc9mKh(vYvISV#|K@8^LBNu z-)!uuZ=9JR8Z~bzy<0NomPn!T`JfwSooA>0jJY+-PE+^FSI0F=7K9AMrpYF!YL|y$ zQ(EVS4c4r!u+3TAI4V#PfTNuIp1euPNoz&8PkM678n@JZ-V|32aiOZ7O?5UyufH{1o6q`b^kJ@483V^41u4BzP$w>ouT z_Gc-=DSN8$s^c!@(HaKNlMfwTzIgF3XLYxdqiH>DKM(i>%Ps4i8Jcad_>pX^-NmV< z-BzVhJF%}j5<@n6f17UCyJ587-6WN^OKARM6TIb}{f{n08fMo$-HtP&SE>7K4cS+4 z`~Ih=8|FS`be_r+8d6ifvir>KC_G!<~dqXJH~RKUrO3OIdJ0VhT( z;M7uuBwTQMrvgrJRLH<33zr;R)8U!{mpoiE;hF^(oW`nv6FC)dDyafarc}V`s0uhC zQ=tskJh(9Myb2tlsDk;cVE!tYzY6BBg88dp{wkQi3g)kZ`Kw_5Dww|t=5K=et6=^r zIO<<2fRTXy63|})`b#vym>9SD3ua3q$DY?JNyrF_&y`cw@TW7F!369yA?fKejjN^zc=O4P1x>RQ^XR-2ew*sO7YW7`|OeKu|O#iOUUsR4mB7Ml|uv1Ka; z_qiVtnl#~CW}ENv)LGHqy;&Q%I2^!>+v)$8OvcXurxf&kBp@t zJ@FivJe-NF1IuROiDWE|OyOYBHH1)M7fxLGMZpGW`+MiZX!ep@UEGjJ=%cbK(@Ki{Oz^3i!A$S@UI+4kN7z-AI&DJ52 zk?F8BDm@VT<4HOUI&?yJ$Qv4CIkrob8Za`@%z{Cu!`2ZJAvEOx3xG~!)&$aVs6nti z2A4CrF@?(pO4>5m94wWMB{4$j<3G4`78y_UM^}m?kzimp78nT~Fy<^qAeoM3Qh{Q2 zx=wuNj`4%P2cRpS*9~J%V-N#@o#@_JAQ`ZSKm6mB^F`nf6Yba_5r2NVk;6DVLZC#q z3L_H{-UZ<~{OQN230&m{fm~s5{4YRF*dEGp2Hg+i8XiPo(5OU|$XFVK!9?YQjt}CC z1=7e32|Ff| zNTV_GpyD|$k$>h!q=1cdMaVaChH?2Lfry~A4P|g)a0ZdcWno-7cu+u|ju9Clpgf4M zIkSNL3@#fBJSHQ`GD)+Dc+gcE6j^iWJV8SGQ-hc^GD1rpw}Lz`qWz&1zZD{zh-C7WjMtovh%%~WY>Yh+ z0_%@wV+my72Ad3ff;pU73=V_Hpz-;SP?Wzyp2Gj(4kEV%sAeOS;R_lYXiDb5LfITD zoo8P7{D6u166(O;@E_ic&l$=BF+sPFS`hwdv5TwJO z8plb$#=BGSL5K~R+;&Vi|5k|_0zR2AV+|*-&5_IrWv~Lr)qm{wMD_oheWCOEO*AKX z0&icyXabi)0de5j(mxF6?-)!Ck!Q00Pyt!hpF#^f9o;3F4r)RH`-@K*W0t z5k3ICAde>Ea-n*@EJj)ks;7zxV+5wd|5gswLhvSz5kk5k9dVt|P5|1!;}3_lhe6?Z zs3^3A;n4QD<5AE|0)xwhPk8`Eyhk44p(x}l2Hv6W3DQOihD6!`Xu`n1WDGA+z)tXj zcc@EX{0Q(7<3aVgxW| z=F*rQ$*CAj=T|uI`{$unGk}Xb;GjA3+6yog;q@{Lga^2a7?>I!j%$HWG32l=(vO1& zAcs^S|Aqp5PD6zQn6wAJU*&g%?`TK(l!7&&9T#qdFM`mSU-=v9AcpkD;6CgV5T9ZX zBj1aKp3tZdKF3DR*e@XdRckYIALh5Ht~6ie5naZvakjF-`olNCFqUK{#~-VPB_Sqi zlIat}xYGma;Lmt|g^vb|v1%kS41Y8dnaCiK(R$49Rt(0R;Rh~o%#opWYKS3bvBDQ& z0ikjHgUB4f22eu<`_7+nq94TB+u1m7cH7`=h18;MU=bGFB%X~}mN1M1&T}))-rmV# zvxTj@qAh7u0s!A|EO=}L(i;Ql;uQex)JTg^ zpbQ-Raf0!nIhM%)N{;c>oj&eT zc_M}44~RR6R5ZYV>BdmwnCGB|kg-fW3&0@E!^XO@R|EN6$;dm-AAP66`~T_&pcGjg zydm%q3!DNPKsO%W+5gz$_-GURAh>p{n_Unr4+0;QTtE=sX2wYg^PrFqCP0ZkzJ3IG zafuu(1XO^NiT;1c&+$jFB^H$rgcaO>vx3WCZ3vac;X+u4XR+|%SUeGpsLXl(orz~d z{P6D;@wf()LKx)AWdnvr>5YgX6fr`fk3V2IjD>~WIs-j@>^Mb`78A4$8x9a{9E+o3 z2h8Pb1{=}zMF7*o5YkTM^;knXU+hps2SAU%BTJkG=o5*I_T#YxDS}`OB163}wXm^v zwr>Aw=Q5$l3JJb=yr2dlz<8mhqy1!E(?p{1*!fxrkVpblWR5*pKEgCM&= z1!IgvsYsV#E*>J22p+uWEe=G*b%JV=7!cVZQiqNOnFT~ZdH!O|H1MQp(ol%0hJX&W zx{iMl*>y+2$Few2!-f{!Ao3VLA4PfMv@Xp=z}rG69W-avccZ*0=IFRVaCYI zTRaG--jXmZG8nRE)M$e^p<0jFHeToiqeEJSN=F)jHi2YfT>edn|1cJ^9XwB{5jGej zwuJ?zITU;&q8!Nlybmy2Y%l|SPsF#s3yFv$R3mAQd0;->$P*+QZ0VSWj;Zp$T7zy- z$f02JP#qZS!TwvjKdSPl*%X#vZy9#~cgsMgCy)W+kda9+)~FppEC>;70b)z| zIVOIxNR7=mJiK<07@FJw;|e(^zBNM9T>q%$*(aW{`gb+ zod>#%3D(#1FV=TLnFWIx&Z7GHbFd37G_m?CR_N<2(bG4=y7?p7I6?rE?56|9h`_)? zG#&t81q%TruntKPaln_cF$M%Ic8Q^m1D>S=-Hkv}xrm`P{)-WUTn=L0Vev!;o`nEM zSUv$12cZtCdl0NM2xKhI*;#)XUqFnEdQmpl!W~+7Y3mcLjN(^O(g$fu!4X*AnnDb0s>GYg&`{k&*Fh+(ZP~~ ziSg$K5$K?NJp0Q7TI0S31!KIRg$J3D#iJ8Kl9TTod1?V8{V^vKd4}u)HOVkDf@A(U zBjTSSqesKjA+-h(4-cU84EMxw-03{P0YsbB2E!*4R&5#gzg=UV1@T{CjbI_G;Y|zu z<5_w3znh@epA9yM28skTLoZ$tst6N3Ed~eZb@JLlJ`fOsKv6W~4P;;E>V~-WAO@%+ zvJgbd$6Y9oOmqevWQb0}vmkC5!{6v_1y~0vTp%F;jvxulBa$&*Wr2BZv$?Is~*6$OgeN5;XGuAb@AHxj~2kY_K3$u=pkd zG4g*g5tEC@5(zxB%R?t9B1Em}SUhP*2Vca7y9r3>JsvTF`y9L5h05kZGdi|E(`DYBEMf16(%Q54{2Mm&uSU z_?S^fcJ;?%arvnfl(ERY0$#)hW(@qU8VNOd|HkCwz~*nOLsO=cHvu3Xs0WJxrQm7p z7*az3&UoO;MhVHIDu)UNADIX9-|z+MiIFgg2QbD)B|_Xh9{o*lTK^SJ{|CBFP7guw z`fpw$tm=OwSdC_vhXr$5V(+uftWFd zkLf#L6~I>1H&G}>S@CV#$#EcEfB97-7#s}bKq0l_}*qCUL zL*nPBc;1hVL7))ILB2ag?#Y6hAvdMqmMU_;jy*mms*L=Opm?0|3IYUg{Qhur8Bp|!oRQwzmODPIEId={~xoS3labT diff --git a/wvnc.c b/wvnc.c index 2872215..a6c04d5 100644 --- a/wvnc.c +++ b/wvnc.c @@ -499,7 +499,6 @@ void *consume_client(void *ptr, wvnc_cmd_t header) uint8_t cmd = header.cmd; uint16_t size = header.size; wvnc_user_data_t *user_data = get_user_data(ptr); - //LOG("Data size is %d\n", size); uint8_t *data; // in case of string switch (cmd) @@ -533,12 +532,36 @@ void *consume_client(void *ptr, wvnc_cmd_t header) //LOG("Key is %c\n", header.data[0]); SendKeyEvent(user_data->vncl, header.data[0] | (header.data[1] << 8), header.data[2]?TRUE:FALSE); break; + case 0x07: + SendClientCutText(user_data->vncl, header.data, strlen(header.data)); + break; default: return vnc_fatal(user_data, "Unknown client command"); } return NULL; } +static void got_clipboard(rfbClient *cl, const char *text, int len) +{ + LOG("received clipboard text '%s'\n", text); + void *data = rfbClientGetClientData(cl, identify()); + wvnc_user_data_t *user_data = get_user_data(data); + uint8_t* cmd = (uint8_t*) malloc(len+1); + cmd[0] = 0x85; + memcpy(cmd+1, text, len); + ws_b(user_data->client,cmd,len+1); + free(cmd); + uint8_t *ack = (uint8_t *)process(user_data, 1); + if (!ack || !(*ack)) + { + LOG("Fail to set client clipboard\n"); + if (ack) + free(ack); + return; + } + free(ack); +} + void handle(void *cl, const char *m, const char *rqp, dictionary rq) { if (ws_enable(rq)) @@ -567,7 +590,7 @@ void handle(void *cl, const char *m, const char *rqp, dictionary rq) vncl->GetPassword = get_password; //cl->HandleKeyboardLedState=kbd_leds; //cl->HandleTextChat=text_chat; - //cl->GotXCutText = got_selection; + vncl->GotXCutText = got_clipboard; vncl->GetCredential = get_credential; vncl->listenPort = LISTEN_PORT_OFFSET; vncl->listen6Port = LISTEN_PORT_OFFSET;