Skip to content

v2: ground-up rewrite (ES modules, WebCodecs, GPU motion blur) - #152

Merged
spite merged 2 commits into
masterfrom
v2
Jul 27, 2026
Merged

v2: ground-up rewrite (ES modules, WebCodecs, GPU motion blur)#152
spite merged 2 commits into
masterfrom
v2

Conversation

@spite

@spite spite commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Replaces the 2012 CCapture.js internals with a modern, modular rewrite:

  • CCapture is now a small class composing two reusable halves: TimeWarp (the virtual clock) and FrameWrap (canvas capture + encoding).
  • WebCodecs-first encoders for MP4 (H.264/AV1) and WebM (VP9/VP8/AV1), with runtime codec negotiation and even-dimension fitting; legacy webm-writer fallback when WebCodecs is unavailable.
  • Motion blur with automatic GPU (WebGL2) or CPU backend.
  • Audio: frame-accurate offline analysis (renderAudioFrames) plus AudioBuffer muxing (AAC/Opus).
  • Frame-stepped
  • Pluggable encoders (FrameEncoder / BatchEncoder) + registerEncoder.
  • UMD/IIFE global build, TypeScript declarations, ESM-from-source.
  • Shared example gallery + landing page; Node + browser test suites.

The 1.x line is preserved on the 1.x branch and npm ccapture.js@1.

spite and others added 2 commits July 27, 2026 19:42
Replaces the 2012 CCapture.js internals with a modern, modular rewrite:

- CCapture is now a small class composing two reusable halves:
  TimeWarp (the virtual clock) and FrameWrap (canvas capture + encoding).
- WebCodecs-first encoders for MP4 (H.264/AV1) and WebM (VP9/VP8/AV1),
  with runtime codec negotiation and even-dimension fitting; legacy
  webm-writer fallback when WebCodecs is unavailable.
- Motion blur with automatic GPU (WebGL2) or CPU backend.
- Audio: frame-accurate offline analysis (renderAudioFrames) plus
  AudioBuffer muxing (AAC/Opus).
- Frame-stepped <video>/<audio> capture; async/await throughout.
- Pluggable encoders (FrameEncoder / BatchEncoder) + registerEncoder.
- UMD/IIFE global build, TypeScript declarations, ESM-from-source.
- Shared example gallery + landing page; Node + browser test suites.

The 1.x line is preserved on the 1.x branch and npm ccapture.js@1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Runs on pushes to master/v2 and on every PR:
- npm test (Node suites), tsc type-check, UMD build
- headless Chromium browser suite via playwright-core installer

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@spite
spite merged commit 123df0a into master Jul 27, 2026
2 checks passed
@spite
spite deleted the v2 branch July 27, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant