Stoatworks Labs

oxbow

FFGL effects for mixers that have no plugins

Field testingv0.1.3ApplicationC++
oxbow — FFGL effects for mixers that have no plugins
No screenshot yet. The interface is a routing panel and a plugin chain; the video shows it moving, which is more use than a still of a patch bay.

What it does

vMix, and most broadcast software, cannot load video effect plugins at all. oxbow is a standalone FFGL host that gets round that without asking the mixer for anything it does not already do: route an input out over NDI or OMT, run a chain of FFGL plugins on the GPU, and send it back. Named for the river feature — a loop that leaves the main channel and rejoins it.

It is not only a network round trip. The chain's output can go straight to a DeckLink card over SDI, or be published as a Syphon server for another application on the same machine to pick up with no round trip at all. Plugin parameters are live over a small web control page, applied on the frame thread between frames.

  • FFGL 2.x host, verified against nine real third-party plugins
  • NDI and OMT in and out, in any combination per side
  • Syphon output on macOS, Spout on Windows
  • DeckLink SDI output with scheduled playback, video only — build it yourself with Blackmagic's SDK, because the published downloads cannot carry it
  • Live parameter control from a browser, and a JSON API underneath
  • Chains of plugins, configured from JSON or the command line

Where it stands

Released at v0.1.3, which is documentation and maintenance: the guide now covers the four output routes it never mentioned. Early development, but the parts that matter are measured rather than assumed. The frame pump runs at 60 fps end to end over NDI and OMT. The Syphon output is verified against Resolume Arena's own Syphon client and against OBS. The DeckLink output is verified on a real Duo 2 by cabling one port to another and reading the picture back off the wire. The Spout output compiles and has never been run.

Watch it running

oxbow video thumbnail

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