This commit is contained in:
Ingvar Stepanyan
2020-09-23 15:54:21 +01:00
parent 4ca7971442
commit c754016ac7

View File

@@ -1,15 +1,17 @@
import mainUrl from 'file-loader!../../../codecs/avif/enc/avif_enc.js'; import mainUrl from 'file-loader!../../../codecs/avif/enc/avif_enc.js';
import avif_enc, { AVIFModule } from '../../../codecs/avif/enc/avif_enc.js'; import { AVIFModule } from '../../../codecs/avif/enc/avif_enc.js';
import wasmUrl from '../../../codecs/avif/enc/avif_enc.wasm'; import wasmUrl from '../../../codecs/avif/enc/avif_enc.wasm';
import workerUrl from 'file-loader!../../../codecs/avif/enc/avif_enc.worker.js'; import workerUrl from 'file-loader!../../../codecs/avif/enc/avif_enc.worker.js';
import { EncodeOptions } from './encoder-meta'; import { EncodeOptions } from './encoder-meta';
import { initEmscriptenModule } from '../util'; import { initEmscriptenModule } from '../util';
declare const avif_enc: typeof import('../../../codecs/avif/enc/avif_enc.js').default;
let emscriptenModule: Promise<AVIFModule>; let emscriptenModule: Promise<AVIFModule>;
export async function encode(data: ImageData, options: EncodeOptions): Promise<ArrayBuffer> { async function init() {
if (!emscriptenModule) { importScripts(mainUrl as unknown as string);
emscriptenModule = initEmscriptenModule( return initEmscriptenModule<AVIFModule>(
avif_enc, avif_enc,
wasmUrl, wasmUrl,
workerUrl, workerUrl,
@@ -17,6 +19,9 @@ export async function encode(data: ImageData, options: EncodeOptions): Promise<A
); );
} }
export async function encode(data: ImageData, options: EncodeOptions): Promise<ArrayBuffer> {
if (!emscriptenModule) emscriptenModule = init();
const module = await emscriptenModule; const module = await emscriptenModule;
const result = module.encode(data.data, data.width, data.height, options); const result = module.encode(data.data, data.width, data.height, options);