48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { CodecRegistry } from "@suaveplan/audio-codecs/registry/registry";
|
|
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
import { FfmpegWasmCodec, register } from "../src/index.js";
|
|
import {
|
|
buildPcmBytes,
|
|
FakeWorker,
|
|
successScript,
|
|
} from "./fixtures/fake-worker.js";
|
|
|
|
describe("integration: codec wired through CodecRegistry", () => {
|
|
it("register installs and registry.detect finds the codec", {
|
|
timeout: 30000,
|
|
}, () => {
|
|
const registry = new CodecRegistry();
|
|
const codec = register(registry, {
|
|
coreLoader: () => Promise.resolve({}),
|
|
workerFactory: () => new FakeWorker() as unknown as Worker,
|
|
});
|
|
expect(codec).toBeInstanceOf(FfmpegWasmCodec);
|
|
const wav = new Uint8Array(44);
|
|
wav[0] = 0x52;
|
|
wav[1] = 0x49;
|
|
wav[2] = 0x46;
|
|
wav[3] = 0x46;
|
|
expect(registry.detect(wav)).toBe("ffmpeg-wasm");
|
|
});
|
|
|
|
it("registry.decode produces an AudioDocument", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const registry = new CodecRegistry();
|
|
const worker = new FakeWorker();
|
|
worker.script.push(...successScript(buildPcmBytes(64, 2)));
|
|
register(registry, {
|
|
coreLoader: () => Promise.resolve({}),
|
|
workerFactory: () => worker as unknown as Worker,
|
|
});
|
|
const wav = new Uint8Array(44);
|
|
wav[0] = 0x52;
|
|
wav[1] = 0x49;
|
|
wav[2] = 0x46;
|
|
wav[3] = 0x46;
|
|
const doc = await registry.decode(wav);
|
|
expect(doc.channels).toBe(2);
|
|
expect(doc.sampleRate).toBeGreaterThan(0);
|
|
});
|
|
});
|