diff --git a/codecs/avif/Makefile b/codecs/avif/Makefile index f5e4d752..723a56b9 100644 --- a/codecs/avif/Makefile +++ b/codecs/avif/Makefile @@ -1,18 +1,12 @@ -ROOT_DIR = node_modules - -CODEC_DIR = $(ROOT_DIR)/libavif -CODEC_BUILD_DIR = build -CODEC_OUT := $(CODEC_DIR)/$(CODEC_BUILD_DIR)/libavif.a - -CODEC_URL = "https://github.com/AOMediaCodec/libavif" -CODEC_VERSION = "v0.8.0" +CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.0.tar.gz +CODEC_DIR = node_modules/libavif +CODEC_BUILD_DIR := $(CODEC_DIR)/build +CODEC_OUT := $(CODEC_BUILD_DIR)/libavif.a +LIBAOM_URL = https://aomedia.googlesource.com/aom/+archive/v2.0.0.tar.gz LIBAOM_DIR := $(CODEC_DIR)/ext/aom -LIBAOM_BUILD_DIR = build.libavif -LIBAOM_OUT := $(LIBAOM_DIR)/$(LIBAOM_BUILD_DIR)/libaom.a - -LIBAOM_URL = "https://aomedia.googlesource.com/aom/" -LIBAOM_VERSION = "v2.0.0" +LIBAOM_BUILD_DIR := $(LIBAOM_DIR)/build.libavif +LIBAOM_OUT := $(LIBAOM_BUILD_DIR)/libaom.a OUT_JS = enc/avif_enc.js dec/avif_dec.js OUT_WASM = $(OUT_JS:.js=.wasm) @@ -29,13 +23,25 @@ all: $(OUT_JS) --bind \ --closure 1 \ -s ALLOW_MEMORY_GROWTH=1 \ - -s MODULARIZE=1 \ -s 'EXPORT_NAME="$(basename $(@F))"' \ + -s MODULARIZE=1 \ + -s 'EXPORT_NAME="$(basename $(@F))"' \ -o $@ \ $+ +$(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_OUT) + mkdir -p $(CODEC_BUILD_DIR) + cd $(CODEC_BUILD_DIR) && \ + emcmake cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=0 \ + -DAVIF_CODEC_AOM=1 \ + -DAVIF_LOCAL_AOM=1 \ + ../ && \ + $(MAKE) + $(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt - mkdir -p $(LIBAOM_DIR)/$(LIBAOM_BUILD_DIR) && \ - cd $(LIBAOM_DIR)/$(LIBAOM_BUILD_DIR) && \ + mkdir -p $(LIBAOM_BUILD_DIR) + cd $(LIBAOM_BUILD_DIR) && \ emcmake cmake \ -DCMAKE_BUILD_TYPE=Release \ -DENABLE_CCACHE=0 \ @@ -43,33 +49,28 @@ $(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt -DENABLE_DOCS=0 \ -DENABLE_TESTS=0 \ -DENABLE_EXAMPLES=0 \ + -DENABLE_TOOLS=0 \ -DCONFIG_ACCOUNTING=1 \ -DCONFIG_INSPECTION=0 \ -DCONFIG_MULTITHREAD=0 \ -DCONFIG_RUNTIME_CPU_DETECT=0 \ -DCONFIG_WEBM_IO=0 \ ../ && \ - $(MAKE) - -$(LIBAOM_DIR)/CMakeLists.txt: $(CODEC_DIR)/CMakeLists.txt - mkdir -p $(LIBAOM_DIR) - curl -L $(LIBAOM_URL)/+archive/$(LIBAOM_VERSION).tar.gz | tar -xzf - -C $(LIBAOM_DIR) - -$(CODEC_OUT): $(LIBAOM_OUT) - mkdir -p $(CODEC_DIR)/$(CODEC_BUILD_DIR) && \ - cd $(CODEC_DIR)/$(CODEC_BUILD_DIR) && \ - emcmake cmake \ - DCMAKE_BUILD_TYPE=Release \ - -DAVIF_CODEC_AOM=1 \ - -DAVIF_LOCAL_AOM=1 \ - ../ && \ $(MAKE) -$(CODEC_DIR)/CMakeLists.txt: - mkdir -p $(CODEC_DIR) - curl -L $(CODEC_URL)/archive/$(CODEC_VERSION).tar.gz | tar -xzf - --strip 1 -C $(CODEC_DIR) +$(CODEC_DIR)/CMakeLists.txt: $(CODEC_DIR) + +$(LIBAOM_DIR)/CMakeLists.txt: $(LIBAOM_DIR) + +$(CODEC_DIR): + mkdir -p $@ + curl -sL $(CODEC_URL) | tar xz --strip 1 -C $@ + +$(LIBAOM_DIR): + mkdir -p $@ + curl -sL $(LIBAOM_URL) | tar xz -C $@ clean: $(RM) $(OUT_JS) $(OUT_WASM) - $(MAKE) -C $(CODEC_DIR)/$(CODEC_BUILD_DIR) clean - $(MAKE) -C $(LIBAOM_DIR)/$(LIBAOM_BUILD_DIR) clean + $(MAKE) -C $(CODEC_BUILD_DIR) clean + $(MAKE) -C $(LIBAOM_BUILD_DIR) clean diff --git a/codecs/avif/dec/avif_dec.wasm b/codecs/avif/dec/avif_dec.wasm index 1a9d31c4..a96f4d3e 100644 Binary files a/codecs/avif/dec/avif_dec.wasm and b/codecs/avif/dec/avif_dec.wasm differ diff --git a/codecs/avif/enc/avif_enc.js b/codecs/avif/enc/avif_enc.js index fd61d3bb..79989b12 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[224108]=6139472; +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 Ga(a){for(;0