Stoatworks Labs

Frame Ferret

A software virtual capture card

Field testingv0.2.6ApplicationC++
Frame Ferret — A software virtual capture card
Frame Ferret

What it does

Frame Ferret treats each protocol as a port on a router. NDI, OMT, SRT and ST 2110 are each a source and a sink. Screen, window and region capture are sources, and a DeckLink card, a Syphon server and a preview are sinks. A crosspoint in the middle connects any of it to any of the rest, and doesn't care which is which.

It's named for what a ferret does: go down the hole and bring back whatever's in there. Point it at a display, a window or a stream on the network, and it'll put that picture wherever you need it: over the wire, out of an SDI card, or into another application on the same machine.

  • NDI, OMT, SRT and ST 2110-20, each sending and receiving
  • Display, window, application and region-of-interest capture on macOS, through ScreenCaptureKit — a crop is a source rect, so it costs nothing
  • DeckLink SDI output with 10-bit v210, and Syphon output on macOS
  • Audio routed through the same crosspoint as video
  • Explicit network interface binding, and an SDP for ST 2110 receivers
  • A browser control page with a live crosspoint grid and preview

Where it stands

Released at v0.2.6, whose launcher stops the engine with SIGTERM before resorting to SIGKILL. v0.2.5 has the desktop launcher say why a start failed rather than appearing to do nothing. v0.2.4 made the macOS launcher one universal build (v0.2.3's was Apple Silicon only), and v0.2.3 made quitting the launcher stop the engine too. v0.2.2 fixed two ST 2110 faults: a receiver that drained its socket with blocking reads, so a sender that stopped left its last frame on air forever and Ctrl-C hung, and a sender timestamp that saturated after 13 h 15 m on Apple silicon and turned the picture into one endless frame. It's early, and measured rather than assumed. Every transport is checked against an implementation that isn't this codebase: NDI and OMT against oxbow, SRT against a pure-Rust srt-tokio sender, ST 2110-20 against GStreamer's RFC 4175 payloader and depayloader, and Syphon against Resolume's own client. The DeckLink output ran on a real Duo 2 at 1080p50 with no late or dropped frames by the card's own count, though the picture on the wire hasn't been read back yet. ST 2110 is a wide-profile sender clocked from the system clock, and its SDP says so. Not written yet: the UVC virtual camera, virtual display, Spout, DeckLink capture, HTML output, and 2110 audio and ancillary.

Watch it running

Frame Ferret video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead