v2.8.2 

Capture

  • Capture is rebuilt on SDL3’s camera subsystem and is no longer experimental.
  • breaking: the old stringly init(device, "1280x720", "30", "nv12") API and reload() are removed :: use the typed constructors / init() and the poll model instead
  • breaking: the previous FFmpeg/avdevice-backed implementation is renamed CaptureFFmpeg ( CaptureFFmpeg.h ); behavior is unchanged, kept as an interim path for platforms without a working SDL3 camera backend ( e.g. Windows/dshow ). It additionally requires DISABLE_VIDEO=OFF
  • breaking: CaptureSDL is removed ( absorbed into Capture )
  • Capture requires only ENABLE_CAPTURE ( default ON ) :: no FFmpeg dependency, works with DISABLE_VIDEO=ON
  • new CameraCapability struct + Capture::getCapabilities() / list() / list_capabilities() for enumerating supported formats
  • device opens in the constructor / init() ( permission prompt fires there ); start() / stop() only gate frame delivery; every failure path ( device not found, permission denied, device removed ) leaves the object inert but safe
  • hardened umfeld-examples/Advanced/capture ( default device, HUD, no-camera fallback, SPACE start/stop, c cycles devices ) and new Advanced/capture-multiple ( two simultaneous instances )
  • see Capture reference for the full API, permission handling ( macOS Info.plist, Linux video group ), and backend status per platform

Libraries

  • add library multi-window for multiple windows in one application
  • add library riso for generating files suitable for risograph printing ( ported from p5.js library at https://antiboredom.github.io/p5.riso released under ANTI-CAPITALIST LICENSE )

core

  • add iOS target ( experimental! see https://codeberg.org/Umfeld/umfeld-ios-application )
  • add multiply alpha blend mode
  • add pixel operations: copy(), set(), blend(), filter() and mask()