Outputs API¶
OutputManager is an Advanced Stable, typed control interface returned by ziviDomeLive.getOutputManager(). Outputs start disabled.
OutputManager output = dome.getOutputManager();
output.setViewForOutput(OutputManager.OutputType.NDI, ViewType.EQUIRECTANGULAR);
output.setOutputEnabled(OutputManager.OutputType.NDI, true);
OutputType¶
The exact order is NDI, SPOUT, SYPHON. Use the enum, never backend-name strings.
OutputState¶
stateDiagram-v2
[*] --> UNAVAILABLE: unsupported/failure
[*] --> AVAILABLE: eligible
AVAILABLE --> INITIALIZED: resources ready
INITIALIZED --> ENABLED: publication on
ENABLED --> INITIALIZED: publication off
ENABLED --> STOPPING: bounded NDI shutdown
STOPPING --> INITIALIZED: worker exits
getOutputState(type) and getOutputFailureReason(type) are the diagnostic authority. UI state or setOutputEnabled intent does not prove receiver success.
Routing¶
setViewForOutput(type, view) is the uniform selector. setNdiView, setSpoutView and setSyphonView are typed convenience methods in the final 2.0 contract. Local texture availability/name/view report the platform-local route; there is no public producer or texture/FBO handle.
RenderMode.FULL uses stored per-destination routes. A dedicated mode temporarily overrides the effective view without deleting them.
Backpressure and shutdown¶
NDI capture crosses GPU → CPU on the render thread, then uses bounded latest-frame-wins publication on a dedicated worker. Captured, sent, dropped and failed counters are observable. Normal disable does not join the worker on the OpenGL thread; terminal shutdown may use a bounded wait.
Syphon and Spout remain platform-local GPU texture-sharing routes. All external outputs require end-to-end receiver qualification.
Deliberately absent¶
Public API does not expose sendOutput, renderer targets, pipeline requirements, resolution notifications, backend shutdown, raw workers or string-based toggles. The facade and internal producer side own them.