Move encode options definition to the wasm

This commit is contained in:
Jake Archibald
2020-09-16 12:30:26 +01:00
parent 7776134bc2
commit f92e3c2194
7 changed files with 75 additions and 78 deletions

View File

@@ -1,4 +1,13 @@
import { EncodeOptions } from 'image-worker/avifEncode';
export interface EncodeOptions {
minQuantizer: number;
maxQuantizer: number;
minQuantizerAlpha: number;
maxQuantizerAlpha: number;
tileRowsLog2: number;
tileColsLog2: number;
speed: number;
subsample: number;
}
export interface AVIFModule extends EmscriptenWasm.Module {
encode(

View File

@@ -1,4 +1,27 @@
import { EncodeOptions } from 'image-worker/mozjpegEncode';
export const enum MozJpegColorSpace {
GRAYSCALE = 1,
RGB,
YCbCr,
}
export interface EncodeOptions {
quality: number;
baseline: boolean;
arithmetic: boolean;
progressive: boolean;
optimize_coding: boolean;
smoothing: number;
color_space: MozJpegColorSpace;
quant_table: number;
trellis_multipass: boolean;
trellis_opt_zero: boolean;
trellis_opt_table: boolean;
trellis_loops: number;
auto_subsample: boolean;
chroma_subsample: number;
separate_chroma_quality: boolean;
chroma_quality: number;
}
export interface MozJPEGModule extends EmscriptenWasm.Module {
encode(

View File

@@ -1,4 +1,32 @@
import { EncodeOptions } from 'image-worker/webpEncode';
export interface EncodeOptions {
quality: number;
target_size: number;
target_PSNR: number;
method: number;
sns_strength: number;
filter_strength: number;
filter_sharpness: number;
filter_type: number;
partitions: number;
segments: number;
pass: number;
show_compressed: number;
preprocessing: number;
autofilter: number;
partition_limit: number;
alpha_compression: number;
alpha_filtering: number;
alpha_quality: number;
lossless: number;
exact: number;
image_hint: number;
emulate_jpeg_size: number;
thread_level: number;
low_memory: number;
near_lossless: number;
use_delta_palette: number;
use_sharp_yuv: number;
}
export interface WebPModule extends EmscriptenWasm.Module {
encode(

View File

@@ -10,21 +10,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import avifEncoder, { AVIFModule } from 'codecs/avif/enc/avif_enc';
import avifEncoder, {
AVIFModule,
EncodeOptions,
} from 'codecs/avif/enc/avif_enc';
import wasmUrl from 'url:codecs/avif/enc/avif_enc.wasm';
import { initEmscriptenModule } from '../util';
export interface EncodeOptions {
minQuantizer: number;
maxQuantizer: number;
minQuantizerAlpha: number;
maxQuantizerAlpha: number;
tileRowsLog2: number;
tileColsLog2: number;
speed: number;
subsample: number;
}
let emscriptenModule: Promise<AVIFModule>;
export default async function encode(

View File

@@ -10,35 +10,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import mozjpeg_enc, { MozJPEGModule } from 'codecs/mozjpeg_enc/mozjpeg_enc';
import mozjpeg_enc, {
MozJPEGModule,
EncodeOptions,
} from 'codecs/mozjpeg_enc/mozjpeg_enc';
import wasmUrl from 'url:codecs/mozjpeg_enc/mozjpeg_enc.wasm';
import { initEmscriptenModule } from '../util';
export const enum MozJpegColorSpace {
GRAYSCALE = 1,
RGB,
YCbCr,
}
export interface EncodeOptions {
quality: number;
baseline: boolean;
arithmetic: boolean;
progressive: boolean;
optimize_coding: boolean;
smoothing: number;
color_space: MozJpegColorSpace;
quant_table: number;
trellis_multipass: boolean;
trellis_opt_zero: boolean;
trellis_opt_table: boolean;
trellis_loops: number;
auto_subsample: boolean;
chroma_subsample: number;
separate_chroma_quality: boolean;
chroma_quality: number;
}
let emscriptenModule: Promise<MozJPEGModule>;
export default async function encode(

View File

@@ -20,12 +20,6 @@ export interface QuantizeOptions {
dither: number;
}
export const defaultOptions: QuantizeOptions = {
zx: 0,
maxNumColors: 256,
dither: 1.0,
};
let emscriptenModule: Promise<QuantizerModule>;
export default async function process(

View File

@@ -10,40 +10,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import webpEncoder, { WebPModule } from 'codecs/webp/enc/webp_enc';
import webpEncoder, {
WebPModule,
EncodeOptions,
} from 'codecs/webp/enc/webp_enc';
import wasmUrl from 'url:codecs/webp/enc/webp_enc.wasm';
import { initEmscriptenModule } from '../util';
export interface EncodeOptions {
quality: number;
target_size: number;
target_PSNR: number;
method: number;
sns_strength: number;
filter_strength: number;
filter_sharpness: number;
filter_type: number;
partitions: number;
segments: number;
pass: number;
show_compressed: number;
preprocessing: number;
autofilter: number;
partition_limit: number;
alpha_compression: number;
alpha_filtering: number;
alpha_quality: number;
lossless: number;
exact: number;
image_hint: number;
emulate_jpeg_size: number;
thread_level: number;
low_memory: number;
near_lossless: number;
use_delta_palette: number;
use_sharp_yuv: number;
}
let emscriptenModule: Promise<WebPModule>;
export default async function encode(