Commit Graph

35 Commits

Author SHA1 Message Date
Ingvar Stepanyan
1a26057452 Switch from napa to curl
Instead of using 127 deps brought by napa just to download the one dependency we actually care about, just use curl & tar directly from Makefile.
2020-07-30 13:28:41 +01:00
Ingvar Stepanyan
d1cff7d84e Consolidate C++ builds
Use a shared base image with fixed Emscripten version, autotools and optimisation flags for all C++ codecs.

Additionally, move build commands for codecs themselves to Makefile - they're already platform-specific, and Make allows for better caching and parallelisation that custom ad-hoc scripts.

This is essentially same as #777 but for C++.
2020-07-28 18:05:09 +01:00
Ingvar Stepanyan
e342766cbf Switch vals to thread_locals
It's not possible to share them across threads, so in case we decide to use multithreading in the future, it's best to mark them as thread_local right away, even if it's a no-op right now.
2020-07-28 16:35:00 +01:00
Ingvar Stepanyan
f1cd6a87da Update JS/Wasm 2020-07-28 16:35:00 +01:00
Ingvar Stepanyan
39e5741cb2 Fix few more issues detected in MozJPEG wrapper 2020-07-28 16:35:00 +01:00
Ingvar Stepanyan
93cbe557cd Simplify memory management for other C++ codecs 2020-07-28 16:35:00 +01:00
Ingvar Stepanyan
1ae93b527c Revert docker run --rm change 2020-05-13 19:39:27 +01:00
Ingvar Stepanyan
a95cb740bf Format C / C++ with Chromium style 2020-05-13 19:39:27 +01:00
Ingvar Stepanyan
de543b3206 Further speed improvements
- Store Emscripten cache inside node_modules/.em_cache. Docker image ships without LTO libs, so Emscripten has to rebuild stdlibs on every build otherwise.
 - Merge webp_enc + webp_dec build scripts. Core libwebp library is same in both cases, so there's no point in storing and building two copies of it.
2020-05-13 19:39:27 +01:00
Ingvar Stepanyan
1542bfb7fd Tweak up compile flags
- Remove unnecessary `-x c++`.
 - Improve rebuild speed by caching:
   - Remove `-f` from `autoreconf` to reuse generated configure scripts.
   - Remove `--rm` from `docker run` to avoid rebuilding Emscripten stdlib.
   - Add `-C` to `./configure` to reuse stored information about `emcc`.
   - Remove `rm -rf build` from WebP encoder/decoder.
2020-05-13 19:39:27 +01:00
Ingvar Stepanyan
d3252bb1bb Add LTO for C++ builds (#755)
* Add LTO for C++ builds

This didn't have much effect on fastcomp builds, but provides further size savings with new LLVM backend we switched to in #750 (and fixes the MozJPEG size regression from the same PR).

In the future we won't need to pass `--llvm-lto 1` explicitly, but latest Emscripten Docker image doesn't contain the Emscripten version with the necessary fixes for this.

* Delete build.log

Co-authored-by: Jake Archibald <jaffathecake@gmail.com>
2020-05-05 11:54:28 +01:00
Ingvar Stepanyan
27ae47117e Leverage make -j to parallelise C++ builds
We've been running each Make command in a single thread, resulting in fairly slow builds for C++ codecs.

This change instead runs all `make` invocations with `-j` defaulting to number of cores (retrieved via `nproc`).

On my machine Docker uses a VM configured to 4 cores out of 8 available. This change brings total build time for C++ codecs down from 10m28s to 7m5s (~3.5 minutes difference).

Note (1): I've converted imagequant builds to use built-in `make` as well to leverage this parallelisation and future-proof build script.
Note (2): we don't need to do the same for Rust, since Cargo parallelises builds by default.
2020-05-01 16:42:41 +01:00
Ingvar Stepanyan
7da3f07333 Switch to Emscripten upstream
Looks like we've been stuck on Emscripten fastcomp backend, misssing out on all new optimisations between LLVM 6 and LLVM 11 and going via slow asm.js pipeline when building.

This changes Docker images for Emscripten projects to point to emscripten-upstream instead and commits the updated artifacts.
2020-05-01 15:00:10 +01:00
Alon Zakai
3f7274a6ac update builds using docker 2020-04-15 13:38:09 -07:00
Alon Zakai
6aeaae6160 Closure all the things 2020-02-27 09:44:28 -08:00
renovate[bot]
f6106650b5 Pin dependencies 2018-12-13 13:20:33 +00:00
Jake Archibald
f396a5b784 MozJPEG chroma subsampling and quality (#235)
* Adding chroma subsampling for mozjpeg

* Adding separate chroma quality.

* Preact sometimes removes the inline styles, this fixes it.

* Simplifying chroma subsample

* Adding comments
2018-11-06 13:46:52 +00:00
Jake Archibald
43def798e1 Two workers & worker termination (#198)
* Refactoring codecs

* Plugging in new processor

* Fixing decorator

* MozJPEG free issue

* Better worker aborting, and terminate workers that aren't used for 10 seconds

* Better comment

* Ooops, half-typed comment

* Uncommenting problematic line

* Surma fixed it!

* Abstracting WASM initialisation

* Better comment

* Don't need this.

* Adding ticket

* noInitalRun

* Reverting MozJPEG issue demo

* Making a const for worker timeout

* Inline docs

* Bail early rather than nesting

* Addressing nits
2018-10-28 09:17:43 +00:00
Surma
f335246673 Use mozjpeg function to free result (#207) 2018-10-14 14:10:21 +01:00
Surma
577c77cc30 Codecs cleanup (#189)
* Update imagequant processor

* Update mozjpeg encoder

* Update optipng encoder

* Update webp decoder

* Update webp encoder

* Remove old codec build tasks

* Add warning about docker image updates
2018-10-12 10:53:33 +01:00
Surma
1b630a092f Dockerize mozjpeg (#169)
* Dockerize mozjpeg build process

* Update README
2018-09-26 12:31:26 +01:00
Jake Archibald
8006a1a5e7 Memory view rather than pointers (#144). Part of #141.
* Returning an object seems to work well

* This doesn't work

* This does!

* Better cast?

* Updating usage in Squoosh
2018-08-21 09:27:04 +01:00
Jake Archibald
1ae65dd4a1 Mozjpeg opts (#140)
* Switching to embind

* Adding options to mozjpeg wasm

* Updating packages

* Ditching enum - causing more problems than it's worth

* Adding mozjpeg options UI

* Forgot about this enum

* Bools just work
2018-08-17 16:25:28 +01:00
Paul Kinlan
7c220b1a92 Adding in Drag and Drop support to fix #45 (#56)
* Merging file drop

* Fixing double drop
2018-06-29 16:37:48 +01:00
Surma
695bbed12b Update webp to v1.0.0 2018-06-14 13:32:05 +01:00
Surma
850a019212 Update README with dependencies 2018-05-29 15:39:46 +02:00
Surma
9c0e0b683e Add codec binaries 2018-05-29 15:37:27 +02:00
Jason Miller
638c57b6fe Fix codec integration (builds and runs on chromebook!) 2018-05-23 01:00:48 +00:00
Surma
1533728f59 Add types to module initialize func 2018-05-21 13:34:42 +01:00
Surma
c2e2a1a0b6 Succesfully load wasm file via webpack 2018-05-17 16:04:56 +01:00
Surma
7edb7f0de8 Wrangling TypeScript and webpack to work with Emscripten wasm stuff 2018-05-17 11:24:40 +01:00
Surma
1b4526ca1e Deduplicate example image 2018-05-15 17:14:29 +01:00
Surma
6249ca8ac8 Add examples and codec-specific documentation 2018-05-15 16:22:23 +01:00
Surma
03a6716745 Generate proper version number for mozjpeg 2018-05-15 15:16:02 +01:00
Surma
ddf8409127 Properly split encoder and decoder 2018-05-15 13:23:41 +01:00