Stoatworks Labs

obs-ffgl

FFGL plugins natively inside OBS

Field testingv0.1.2Plugin & ModuleC++
obs-ffgl — FFGL plugins natively inside OBS
No screenshot — what this does is make somebody else's plugins appear in OBS's own filter list, so a picture of it is a picture of OBS. The video shows it running.

What it does

OBS can't load FFGL plugins, and the usual way round that is a trip across the network: send a source out over NDI, run the effect somewhere else and bring it back. obs-ffgl saves you the trip. It loads any FFGL 2.x bundle and renders it inside OBS's own OpenGL context, so there's no second render, no copy back over the network and no extra frame of latency.

It registers two things. FFGL Effect is a filter, for plugins that change a picture. FFGL Source is an input, for plugins that make one, so a generator is a source in its own right instead of a filter perched on a throwaway picture. Every parameter the plugin declares shows up in OBS's own properties, in the plugin's groups and order, with proper dropdowns.

The FFGL host underneath is oxbow's, compiled from a submodule rather than copied in, so there's only one implementation of the format across both projects.

  • Any FFGL 2.x plugin, not only ours — nothing is hard-coded
  • Renders in OBS's own GL context: no round trip, no readback
  • Filter and source forms, with the source list filtered to real generators
  • Parameter groups and dropdowns taken from the plugin itself
  • Finds plugins where Resolume already keeps them

Where it stands

Released at v0.1.2, which is documentation and packaging only; the plugin itself is v0.1.1's. Early, and macOS only. FFGL is an OpenGL format, so the module registers nothing unless OBS is on its OpenGL renderer, rather than handing you black. Of 22 FFGL bundles driven through a real OBS and compared pixel by pixel, 17 render correctly. Two need a file parameter set, two fail the same way under oxbow (so those bugs are the plugins' own), and one is a shell that correctly refuses.

Watch it running

obs-ffgl video thumbnail

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