Ir para o conteúdo

API de Outputs

OutputManager é uma interface de controle tipada Advanced Stable retornada por ziviDomeLive.getOutputManager(). Outputs começam desabilitados.

OutputManager output = dome.getOutputManager();
output.setViewForOutput(OutputManager.OutputType.NDI, ViewType.EQUIRECTANGULAR);
output.setOutputEnabled(OutputManager.OutputType.NDI, true);

OutputType

A ordem exata é NDI, SPOUT, SYPHON. Use o enum, nunca strings com nomes de backend.

OutputState

stateDiagram-v2
  [*] --> UNAVAILABLE: sem suporte/falha
  [*] --> AVAILABLE: elegível
  AVAILABLE --> INITIALIZED: recursos prontos
  INITIALIZED --> ENABLED: publicação ativa
  ENABLED --> INITIALIZED: publicação inativa
  ENABLED --> STOPPING: shutdown NDI bounded
  STOPPING --> INITIALIZED: worker encerra

getOutputState(type) e getOutputFailureReason(type) são a autoridade diagnóstica. Estado da UI ou intenção em setOutputEnabled não prova sucesso no receiver.

Roteamento

setViewForOutput(type, view) é o seletor uniforme. setNdiView, setSpoutView e setSyphonView são conveniências tipadas do contrato final 2.0. Disponibilidade/nome/view de textura local reportam a rota platform-local; não existe producer público nem handle de textura/FBO.

RenderMode.FULL usa rotas salvas por destino. Um modo dedicado substitui temporariamente a view efetiva sem apagá-las.

Backpressure e shutdown

A captura NDI cruza GPU → CPU na render thread e usa publicação bounded latest-frame-wins em worker dedicado. Contadores de captured, sent, dropped e failed são observáveis. Disable comum não faz join do worker na thread OpenGL; shutdown terminal pode usar espera limitada.

Syphon e Spout continuam rotas platform-local de compartilhamento GPU. Todo output externo exige qualificação end-to-end com receiver.

Deliberadamente ausente

A API pública não expõe sendOutput, targets de renderer, requirements do pipeline, notificações de resolução, shutdown de backend, workers raw ou toggles por string. A facade e o lado produtor interno possuem essas operações.