mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-15 18:19:47 +00:00
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.
MozJPEG encoder
- Source: https://github.com/mozilla/mozjpeg
- Version: v3.3.1
Dependencies
- Docker
Example
See example.html
API
int version()
Returns the version of MozJPEG as a number. va.b.c is encoded as 0x0a0b0c
void free_result()
Frees the result created by encode().
Uint8Array encode(std::string image_in, int image_width, int image_height, MozJpegOptions opts)
Encodes the given image with given dimension to JPEG. Options looks like this:
struct MozJpegOptions {
int quality;
bool baseline;
bool arithmetic;
bool progressive;
bool optimize_coding;
int smoothing;
int color_space;
int quant_table;
bool trellis_multipass;
bool trellis_opt_zero;
bool trellis_opt_table;
int trellis_loops;
bool auto_subsample;
int chroma_subsample;
bool separate_chroma_quality;
int chroma_quality;
};