Plugin FFGL Source de alta performance desenvolvido para broadcast e eventos ao vivo. Recebe fluxos SRT com decodificação acelerada por GPU, painel web de configuração integrado, telemetria detalhada em tempo real e roteamento de áudio independente para Program e Cue/Monitor.
Desenvolvido para produções internas e transmissões ao vivo de alta exigência. Código-fonte e binários permanecem privados no acervo técnico — sem distribuição pública.
CFFGLThumbnailInfo (160×120 nativa / 640×480 display)
Construído em C++20 nativo sobre o SDK oficial FreeFrameGL da Resolume, FFmpeg via vcpkg e libsrt.
Servidor HTTP/WebSocket local rodando diretamente dentro da instância da DLL. Um clique no botão "Abrir Painel" no patch do Arena abre o navegador com a interface completa de controle — sem instalar Node, Electron ou serviços externos.
Tira o processamento pesado de decodificação de vídeo da CPU e delega diretamente ao hardware da GPU (NVIDIA, AMD ou Intel), mantendo a taxa de quadros do Resolume Arena sólida acima de 60 FPS mesmo em 1080p e 4K.
Arquitetura pioneira de áudio para Resolume: divide o fluxo de áudio decodificado em duas saídas de hardware completamente independentes, com controles de ganho e mudo individuais.
Thread sentinela dedicada em segundo plano. Se a conexão SRT cair por oscilação transitória de rede ou reset do transmissor ("encerrada pelo remetente"), o watchdog detecta e reconecta automaticamente em 2 segundos.
Streaming bidirecional via WebSocket (10 ticks/seg) lendo diretamente estatísticas nativas do protocolo SRT (SRT_TRACEBSTATS) e do demuxer FFmpeg.
Permite ao VJ auditar vídeo e áudio antes de liberar para o palco. O botão Preview estabelece conexão e decodificação, alimenta o stream MJPEG do painel e o bus Monitor, enquanto a saída de vídeo FFGL e o áudio Program permanecem em standby.
ABRIR-PAINEL.url gerado automaticamente no pacoteDesenvolvido sob o padrão visual dark com acento verde elétrico #00e676. Funciona localmente via navegador, com interface responsiva para desktop e mobile.
Exibe o stream MJPEG de conferência visual local antes de colocar no ar. Atualiza em tempo real sem afetar a textura enviada para a renderização do Arena.
Configuração completa dos parâmetros do protocolo: Modo (Caller / Listener / Rendezvous), Hostname do transmissor, Porta UDP, Latência em milissegundos (buffer TSBPD) e credenciais de segurança opcionais (Passphrase, PBKeyLen e Stream ID).
Métricas vitais de transmissão: FPS recebido vs decodificado, resolução, modo de decode (GPU D3D11VA ou CPU Software), bitrate, RTT, pacotes perdidos/retransmitidos e histórico gráfico contínuo dos últimos 60 segundos.
A joia do fluxo operacional: seletores independentes de dispositivo de hardware para Program (PA/Live) e Monitor/Cue (Fone do operador). Sliders de ganho percentual, botões de mute independentes e medidor de nível estéreo L/R antes do ganho.
Tradicionalmente, trazer áudio SRT para dentro de softwares de VJ como o Resolume Arena exigia encoders virtuais, cabos virtuais NDI ou rotas complexas via software de terceiros.
O SRT Receiver by Mizin resolve isso na raiz do motor C++: o decodificador resampleia o fluxo para float planar estéreo @48kHz e entrega simultaneamente a dois barramentos WASAPI/ASIO nativos:
Direcionado para a interface de som principal do evento. Fica 100% mudo durante o Preview para testes sem risco de vazar no palco, e entra instantaneamente no ar ao clicar "Colocar no ar".
Direcionado para o fone do VJ ou monitor de referência. Permite escutar a voz do apresentador, trilha ou idioma antes da câmera abrir no telão, com controle de volume totalmente isolado.
Evolução contínua orientada a testes reais no Resolume Arena 7.29 em ambiente Windows x64.
CFFGLThumbnailInfo.version.json no pipeline de release automático.videoDeliveryThread_ dedicada com fila clonada; áudio entregue de forma síncrona imediata sem bloqueio. Elimina 100% dos picotamentos de áudio relatados em teste ao vivo.FF_SUCCESS em índices não mapeados).SendJsonResponse com Content-Length explícito), corrigindo dropdowns vazios de áudio.RequestStop: SRT -> RingBuffer -> Decoder).flipV=true no FFGLScreenQuad) alinhando convenção top-down do FFmpeg com bottom-up do OpenGL.| Host Alvo | Resolume Arena 7.19.0+ / Resolume Wire (Windows x64) |
|---|---|
| API Gráfica do Host | FreeFrameGL (FFGL) 2.1 · OpenGL 4.1 Core Profile |
| Identificador FFGL | MzSR · Nome exibido na lista: SRT RX Mizin (12 chars, protocolo limitado a 16 bytes) |
| Protocolo de Transporte | SRT (Secure Reliable Transport) via libsrt nativa (vcpkg) |
| Modos de Conexão SRT | Caller (conectar a servidor remoto), Listener (aguardar encoder), Rendezvous (NAT traversal) |
| Codecs de Vídeo Suportados | H.264 (AVC) e H.265 (HEVC) em container MPEG-TS, até 4K60 |
| Aceleração de Hardware | Direct3D 11 Video Acceleration (D3D11VA) nativo do Windows com fallback para software |
| Codecs de Áudio | AAC, Opus, PCM s16le/s24le/s32le, MP3 — decodificação e resample para float planar @48kHz |
| Drivers de Áudio | WASAPI (Shared Mode, Event-Driven, buffer 100ms) e interfaces de baixa latência ASIO |
| Saídas de Áudio Independentes | 2 barramentos simultâneos: Program (Show principal) e Monitor/Cue (Audição do operador) |
| Servidor Web Embutido | CivetWeb v1.16 (C/C++ puro, embutido na DLL, sem runtime externo) |
| Telemetria | WebSocket bidirecional contínuo (JSON): banda, RTT, perda, retransmissão, FPS, VU meters |
| Compilação | MSVC 2022 / C++20 / CMake 3.20+ / vcpkg (ffmpeg, libsrt, glew, civetweb, nlohmann-json) |