Skip to content

v1.1.4 — up to 6x faster decoding

Choose a tag to compare

@caseymanos caseymanos released this 14 Jul 20:19
· 21 commits to main since this release

Highlights

  • Up to 6x faster decoding — FFmpeg threading was never enabled (thread_count defaulted to 1); decoders and the non-realtime encoder path now auto-detect core count
  • Zero-copy decode output — decoded frames are adopted directly instead of being copied twice per frame on the JS thread

Benchmarks (1080p, 150 frames, M4 Pro, median of 3): H.264 decode 310 → 1,839 fps · VP9 decode 470 → 1,577 fps · VP9 encode 15 → 49 fps

Fixed

  • AudioDecoder.flush() resolved before deferred outputs were emitted, so outputs read after await flush() appeared empty
  • VP9/VP8 encoding never enabled row-mt (and VP9 got no tile columns), preventing multithreaded encoding

Improved

  • VideoFrame buffer constructor no longer keeps a redundant JS-side copy when a native frame exists
  • Publish and CI now gate on the spec-compliance suite
  • Releases publish via npm trusted publishing (OIDC) — no more expiring tokens

Versions 1.1.0–1.1.3 were tagged but never published to npm (release pipeline auth migration); this release supersedes them.