feat(modality)!: SnapOtter 2.0 phase 3 modality framework: media/doc engines, pool routing, display modes (#218)

This commit is contained in:
SnapOtter
2026-06-13 10:18:39 +08:00
parent c451b939c7
commit d647d8ed19
99 changed files with 4380 additions and 1813 deletions
+30
View File
@@ -0,0 +1,30 @@
import { resolveEncoder } from "@snapotter/media-engine";
import { afterEach, describe, expect, it } from "vitest";
const ORIGINAL = process.env.SNAPOTTER_HW_ACCEL;
afterEach(() => {
if (ORIGINAL === undefined) delete process.env.SNAPOTTER_HW_ACCEL;
else process.env.SNAPOTTER_HW_ACCEL = ORIGINAL;
});
describe("resolveEncoder", () => {
it("defaults to software encoders", () => {
delete process.env.SNAPOTTER_HW_ACCEL;
expect(resolveEncoder("h264")).toBe("libx264");
expect(resolveEncoder("hevc")).toBe("libx265");
expect(resolveEncoder("av1")).toBe("libsvtav1");
expect(resolveEncoder("aac")).toBe("aac");
});
it("maps nvenc when SNAPOTTER_HW_ACCEL=nvenc", () => {
process.env.SNAPOTTER_HW_ACCEL = "nvenc";
expect(resolveEncoder("h264")).toBe("h264_nvenc");
expect(resolveEncoder("hevc")).toBe("hevc_nvenc");
expect(resolveEncoder("aac")).toBe("aac"); // audio unaffected
});
it("falls back to software for unknown accel values", () => {
process.env.SNAPOTTER_HW_ACCEL = "quantum";
expect(resolveEncoder("h264")).toBe("libx264");
});
});