RECEPÇÃO PROFISSIONAL DE BAIXA LATÊNCIA

Vídeo e áudio SRT nativos direto na composição do Arena.

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.

Protocolo SRT (Caller / Listener / Rendezvous)
Decodificação D3D11VA Hardware (H.264 / HEVC)
Motor de Áudio WASAPI & ASIO Dual-Bus
Host Compatível Resolume Arena 7.19+ (x64)
🔒
Módulo Exclusivo do Acervo de Mizin

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.

SRT Receiver by Mizin Thumbnail Oficial
Thumbnail estática embutida na DLL via CFFGLThumbnailInfo (160×120 nativa / 640×480 display)

Engenharia de precisão para operações críticas de palco e broadcast

Construído em C++20 nativo sobre o SDK oficial FreeFrameGL da Resolume, FFmpeg via vcpkg e libsrt.

🎛️

Painel Web Embutido (CivetWeb)

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.

  • Bind dinâmico com fallback sequencial de portas (8910+)
  • Suporte a múltiplas instâncias simultâneas em layers diferentes
  • Persistência no navegador (localStorage) e no patch do Arena
⚡

Decode GPU via Direct3D 11 (D3D11VA)

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.

  • Separacão estrutural de threads: vídeo e áudio em laços dedicados
  • Fila de entrega de vídeo desacoplada para eliminar atrasos
  • Fallback automático e transparente para software se necessário
🔊

Roteamento de Áudio Dual-Bus (WASAPI + ASIO)

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.

  • Bus Program: alimenta a saída principal do show (PA / Live broadcast)
  • Bus Monitor/Cue: saída de fone/cabine pro operador auditar antes de ir pro ar
  • Matriz de canais, pares estéreo, suporte a interfaces ASIO e medidores VU L/R
🛡️

Watchdog com Auto-Reconnect Inteligente

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.

  • Distingue quedas acidentais (reconecta) de comandos "Parar" do operador (mantém parado)
  • Restaura o mesmo nível operacional prévio (Previewing ou Live)
  • Buffer WASAPI calibrado em 100ms para imunidade contra jitter de SO
📊

Telemetria Completa em Tempo Real

Streaming bidirecional via WebSocket (10 ticks/seg) lendo diretamente estatísticas nativas do protocolo SRT (SRT_TRACEBSTATS) e do demuxer FFmpeg.

  • Banda real estimada (Mbps) vs Taxa de recepção efetiva
  • Round-Trip Time (RTT em ms), perda de pacotes e retransmissões
  • FPS do stream vs FPS decodificado real e bitrate do encoder
👁️

Pipeline Pré-Aquecido com Preview MJPEG

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.

  • Promoção instantânea para Live com clique em "Colocar no ar" (zero re-buffering)
  • Modos de escala no Arena: Native 1:1, Fit, Fill e Stretch
  • Atalho desktop ABRIR-PAINEL.url gerado automaticamente no pacote

O Painel de Controle Embutido

Desenvolvido sob o padrão visual dark com acento verde elétrico #00e676. Funciona localmente via navegador, com interface responsiva para desktop e mobile.

CONTROL ROOM · SRT Receiver by Mizin · http://localhost:8910/ ● CONECTADO
Painel de Controle SRT Receiver by Mizin

01 · Monitor de Entrada

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.

02 · Conexão SRT

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).

03 · Telemetria em Tempo Real

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.

04 · Roteamento de Áudio

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.

Roteamento de Áudio Independente: Adeus cabos e gambiarras

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:

SAÍDA PRINCIPAL

Bus Program (PA / Show)

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".

Dispositivo dedicado Ganho 0-100% Mute mestre
SAÍDA DO OPERADOR

Bus Monitor / Cue (Fone / Cabine)

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.

Dispositivo de fone separado Ganho independente Ativo em Preview

Registro de Desenvolvimento & Engenharia

Evolução contínua orientada a testes reais no Resolume Arena 7.29 em ambiente Windows x64.

CHANGELOG.md · SRT Receiver by Mizin · Registro de Versões
v1.3.0 (build 0007) 2026-11-13 STABLE
  • feat Matriz de roteamento de áudio estilo Dante Controller (todos os canais de cada saída, PGM/CUE, ganho e mudo por canal, limitador, presets e rota salva na composição).
  • fix Arena podia fechar com erro ao remover fonte (libsrt finalizada sem srt_cleanup); limpeza em segundo plano ao remover a última fonte.
  • fix Teste de thumbnail lê o FFResult em 32 bits (bits altos do FFMixed são indefinidos na ABI Win64).
  • improve URLs do painel versionadas para evitar cache agressivo no navegador.
v1.2.0 (build 0006) 2026-11-13
  • feat Roteamento de áudio com suporte a ASIO (UMC, Dante, Blackmagic) e todas as saídas WASAPI, pares estéreo e reabertura limpa ao trocar dispositivo.
  • feat Preview com quadros estáticos sob demanda e Go Live separado do Preview (saída do Resolume só no ar).
  • fix Preserva proporção da imagem no Resolume com novo parâmetro Scaling (Native 1:1, Fit, Fill, Stretch).
  • improve Upload YUV nativo (NV12/P010/YUV) para a GPU e cópia GPU->CPU sob demanda.
v1.1.0 (build 0005 / 0004) 2026-11-13
  • feat Novo layout visual do painel de controle (dark + #00e676) e thumbnail SRT gráfica embutida na DLL via CFFGLThumbnailInfo.
  • fix Preservação de metadados manuais em version.json no pipeline de release automático.
v1.0.0 (build 0003) 2026-11-13 MAJOR MILESTONE
  • fix Separacão de threads no DecoderWorker: vídeo pesado (sws_scale duplo + JPEG) delegado para 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.
  • fix Aumento do buffer WASAPI de 20ms para 100ms para absorção de jitter de agendamento do Windows.
  • feat Reconexão automática: watchdog em thread própria detecta quedas transitórias de SRT e restabelece a conexão em 2s sem intervenção do operador.
v0.2.0 (build 0002) 2026-11-13
  • feat Aceleração GPU Direct3D 11 (D3D11VA): decode de vídeo H.264/HEVC offloaded para hardware gráfico. Reduz consumo de CPU de 197% de 1 core para níveis marginais; Resolume atinge 60+ FPS lisos.
  • fix Correção de crash silencioso ao reabrir composições salvas com layouts antigos de parâmetros (retorno defensivo de FF_SUCCESS em índices não mapeados).
  • fix Correção de HTTP chunked encoding no CivetWeb (centralização em SendJsonResponse com Content-Length explícito), corrigindo dropdowns vazios de áudio.
  • fix Eliminação do deadlock no encerramento do Arena (reordenação no RequestStop: SRT -> RingBuffer -> Decoder).
  • fix Inversão da orientação vertical de vídeo (flipV=true no FFGLScreenQuad) alinhando convenção top-down do FFmpeg com bottom-up do OpenGL.
v0.1.0 (build 0001) 2026-11-13 INITIAL COMMIT
  • feat Estrutura inicial do plugin FFGL Source "SRT Receiver" (libsrt + FFmpeg demux/decode + OpenGL texture upload).
  • feat Painel web embutido (CivetWeb v1.16) com WebSocket de telemetria.
  • feat Motor de áudio WASAPI compartilhado.

Especificações de Execução e Compatibilidade

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)