Recepção de ST 2110¶
ST 2110 é o sinal de estúdio transportado por uma rede IP: vídeo não comprimido, áudio e dados auxiliares viajam em grupos multicast separados, amarrados por um relógio PTP comum. O Mcaster recebe esse sinal como uma fonte de stream comum: as trilhas entram na cadeia, são transcodificadas, gravadas e entregues pelos mesmos meios que um sinal de satélite ou uma fonte SRT.
Uma coisa distingue o 2110 de qualquer outra entrada, e a configuração começa por ela: aqui a fonte não é um endereço, e sim um conjunto de trilhas. Vídeo, áudio e dados auxiliares são três grupos diferentes com três conjuntos de parâmetros diferentes, e o stream é montado a partir deles, não de uma única URL.
O que a rede precisa cumprir¶
Um fluxo não comprimido são gigabits por segundo, e a rede é preparada para isso antes de alguém abrir o painel.
- Banda por fluxo. 1080p60 com 10 bits são cerca de 2,5 Gbit/s e 260 mil pacotes por segundo. Uma interface de 10 Gbit/s aguenta três fluxos desses, não quatro: o restante é folga para as rajadas.
- Quem escolhe a porta é o operador, não a estação. A inscrição sai pela interface indicada nas configurações da entrada, e é ali que o switch entrega o grupo. Uma porta indicada sem banda suficiente é o diagnóstico mais comum: o fluxo «chega» enquanto a imagem se desfaz, porque quem descarta pacotes é o switch — e os contadores da própria máquina continuam limpos.
- PTP é obrigatório. O relógio do 2110 vem do domínio PTP, e a estação concilia a própria escala de tempo com ele. Um relógio desviado aparece no status do stream separadamente dos erros de recepção: não são a mesma coisa.
- Multicast e IGMPv3. Os grupos são entregues pela inscrição da estação; quando vários emissores alimentam um grupo e você precisa de um deles, o endereço dele vai no campo Origem (SSM).
Conecte as trilhas¶
Crie um stream, abra a aba Fontes e clique em + Adicionar fonte. O protocolo é ST 2110.

Os campos de toda a entrada:
- Interface — o nome da porta (
dpdk0) ou o endereço dela. Aqui não existe o valor «qualquer», e isso é proposital: a interface decide por onde o switch entrega o grupo. - Endereçamento — quem dá os endereços às trilhas. É o assunto da seção seguinte.
- Reduzir 10 bits para 8 na recepção — economiza banda até o transcodificador ao custo dos dois bits baixos. Desligado por padrão.
Os receptores são anunciados pela própria entrada: vídeo, áudio e dados auxiliares aparecem sempre, e o papel deles não é perguntado. O controlador vê exatamente esses três receptores e traz os endereços para eles. Uma trilha assim não está na configuração enquanto não houver nada a dizer sobre ela.
Pode haver mais trilhas de um mesmo tipo: uma segunda trilha de áudio para outro idioma é criada com Adicionar faixa no bloco Faixas adicionadas. Ali o papel (audio 2) é escolhido por você, e o tipo precisa ser nomeado explicitamente — de uma string livre ele não se deduz. A edição do papel é aplicada quando o campo perde o foco.
Cada trilha tem a caixa Receber: desmarcá-la mantém a trilha na configuração com todos os parâmetros, mas nenhum socket é aberto.
Não esqueça de Salvar: a edição da entrada chega ao servidor apenas pelo botão.
Duas formas de endereçar uma trilha¶
A forma é escolhida no campo Endereçamento e vale para a entrada inteira, não para uma trilha isolada: uma rede ou é governada por um controlador ou não é, e uma trilha comutada pelo controlador ao lado de outra digitada à mão não é um cenário, e sim um mal-entendido que alguém teria de depurar.
- Controlador (IS-05) — o caminho principal. O operador liga a entrada e nomeia a interface; de onde receber é o controlador que diz, e para todas as trilhas de uma vez.
- À mão — o mesmo feito por você: o operador digita o endereço e o formato de cada trilha. Serve para uma rede sem controlador e para testes.
O arquivo de transporte não está nessa lista, e isso é proposital. O SDP é enviado pelo controlador, e descreve uma conexão já feita em vez de ser um jeito de estabelecê-la: ninguém escreve SDP à mão. Uma trilha comutada traz a linha Comutado pelo controlador com o identificador do emissor, e abaixo dela o Arquivo de transporte, somente leitura. Isso é diagnóstico — a resposta a «de onde isto está chegando agora» — e não um campo de entrada.
O endereçamento à mão fica assim:

Um endereço sem formato é rejeitado, e não é implicância: mídia não comprimida não carrega geometria própria dentro do fluxo. Um pacote 2110-20 não declara nem o tamanho do quadro, nem a taxa, nem a subamostragem — o receptor precisa saber disso de antemão, ou não há contra o que analisar as linhas. Daí o conjunto de campos: Largura, Altura, Profundidade de bits, Subamostragem, Taxa de quadros, Entrelaçado, Transporte por campos (segmented).
A taxa é escrita como fração, como no SDP: 60000/1001, não 59.94. O arredondamento aqui não é um detalhe — a partir dele não se reconstrói a grade de marcas de tempo.
Dos esquemas de subamostragem, o que hoje chega à cadeia é YCbCr 4:2:2 com 8 ou 10 bits. Os demais — 4:2:0, 4:4:4, RGB — são analisados e distribuídos em grupos de pixels, mas deles não se monta quadro algum: a trilha para e o motivo nomeia o esquema e a profundidade.
Os dois campos de um quadro entrelaçado a própria estação junta; o desentrelaçamento continua sendo trabalho do transcodificador.
Comutação por um controlador NMOS¶
O endereçamento à mão é o caminho reserva. A estação faz o que a infraestrutura de estúdio espera dela: anuncia-se a um controlador por IS-04 e entrega a ele a comutação dos seus receptores por IS-05. O controlador escreve ele mesmo o arquivo de transporte na trilha — a mesma edição de configuração que um operador teria feito.
O anúncio é configurado nas configurações do nó, seção NMOS:

- Interface — a porta anunciada. Um campo vazio significa que o NMOS está desligado e o nó nem sequer aparece no registro.
- Identidade — dela derivam os identificadores dos recursos; vazio significa o nome do host. Se você a mudar, todos os identificadores do nó mudam e o controlador vê um dispositivo novo.
- Rótulo — o que aparece no controlador.
- Onde este nó serve as interfaces NMOS — Porta e interface próprias (recomendado) ou Porta HTTP compartilhada do nó. A própria é definida por Interface das interfaces NMOS (a rede de controle; vazio significa a interface de mídia) e Porta das interfaces NMOS (8090 por padrão).
A escolha é sobre acesso, não sobre conveniência: a ativação IS-05 não é autenticada, e na porta compartilhada as interfaces aparecem em todas as portas HTTP do nó, inclusive as públicas. Só a rede pode limitar quem chega até elas — por isso a recomendação é uma porta separada na rede de controle.
A ativação é servida por quem é proprietário da configuração: para um nó gerenciado por um cluster, o próprio cluster (nas configurações dele é a seção NMOS (ST 2110) com a caixa Comutar entradas pelo central); para uma caixa autônoma, ela mesma. Do lado do nó não há nada a configurar para isso.
Sobre os receptores importa uma coisa: um nó nunca tem receptores sobrando. O controlador vê exatamente aqueles derivados dos streams, e uma ativação não cria stream algum. Por isso o stream a ser comutado é criado de antemão, com uma entrada ST 2110 no modo Controlador (IS-05), onde as trilhas ainda não têm endereços. Enquanto o stream não existir, o controlador não tem o que comutar.
Uma trilha comutada diz isso no formulário: Comutado pelo controlador com o identificador do emissor. Essa linha é preenchida pelo controlador e não pode ser editada.
A estação procura um registro por conta própria e, ao encontrá-lo, registra-se nele e mantém a inscrição viva com um batimento. Se não houver registro na rede, ela fala diretamente com o controlador, ponto a ponto.
O que chega ao stream¶
O stream começa assim que a primeira trilha passa a chegar e não espera pelas demais. O estado da recepção fica na aba Fontes, no bloco Saúde das fontes:

O cartão mostra o status, o endereço de entrada, o conjunto de trilhas e o bitrate de recepção. Os números da captura são reais: 2501 Mbit/s é uma trilha de vídeo 1080p60 de 10 bits mais dezesseis canais de áudio L24.
O conjunto de trilhas fica na aba Configurações básicas, no bloco Conteúdo do fluxo:

O codec nomeia a disposição no cabo, e não aquilo em que o fluxo vai se tornar: yuv422p10st para o vídeo de 10 bits e l24 para o áudio. A estação não faz downmix de canais — pega tantos quantos o emissor declarar e os entrega como uma única trilha.
Um fluxo não comprimido precisa de transcodificação¶
Um stream que não tem nada além de uma entrada 2110 é um estado de funcionamento, não uma falha: ele arranca, recebe dados e passa quadros aos assinantes. Mas nele não há segmentação, e a playlist mestre chega sem uma única trilha: uma trilha não comprimida não pode entrar nela — um player quebraria analisando o codec dela em vez de receber um honesto «não há nada para reproduzir».
Por isso o painel oferece um link ao lado do conjunto de trilhas — Transcodificar para reproduzir na web: ele abre a aba Transcodificador com um perfil pronto. Depois disso o stream reproduz, grava no arquivo e alimenta os envios como qualquer outro.
Os indicadores de cadeia não comprimida e de segmentação inativa aparecem separadamente no status do stream, para que esse estado não seja confundido com um defeito.
As miniaturas de um fluxo não comprimido funcionam sem transcodificador: são tiradas diretamente da trilha não comprimida, inclusive para o arquivo.
Dados auxiliares e legendas¶
Uma trilha do tipo dados auxiliares (2110-40) é recebida e analisada em pares DID/SDID. O que acontece depois depende do que sejam esses dados:
- O teletexto OP-47 chega ao stream como uma trilha de teletexto — a mesma que o teletexto do MPEG-TS produz.
- As legendas CEA-708/608 são analisadas e o contador do par DID/SDID delas cresce, mas nenhuma trilha de legendas aparece no stream: essas legendas vivem dentro do vídeo codificado, e entregá-las na saída ainda não faz parte da estação.
- Os pares desconhecidos são contados e descartados: não existe uma trilha de «dados auxiliares crus» saindo para fora.
Um pacote que não passa na soma de verificação é descartado com um contador; uma paridade quebrada é contada, mas não descarta o pacote.
Ajuste fino¶
Normalmente desnecessário: um campo vazio significa o padrão da estação, não «desligado». Ele vive em dois blocos recolhidos.
Ajuste desta faixa — o que pertence a um grupo:
- Núcleo de CPU — fixa a thread de recepção da trilha em um núcleo. Cada trilha tem a própria thread, por isso cada uma tem o próprio campo. Vazio deixa ao escalonador.
- Fila AF_XDP — a fila da placa que a trilha assume, contornando o socket comum. Vazio significa socket comum.
Ajuste da entrada — o que é comum:
- Buffer do socket (bytes) — quanto o kernel retém no buffer de recepção de cada socket.
- Fila de quadros (bytes) — o teto da fila de uma trilha entre a recepção e a cadeia. No estouro, o excedente é descartado com um contador: a recepção não trava.
- Quadro de áudio (ms) — a granularidade das mensagens de áudio. Menos significa menos atraso e mais mensagens.
O que é suportado¶
| Capacidade | Estado |
|---|---|
| Vídeo 2110-20: YCbCr 4:2:2 com profundidade de 8 e 10 bits | sim |
| Os 10 bits são mantidos na disposição do cabo, sem redução | sim |
| Outros esquemas 2110-20: 4:2:0, 4:4:4, RGB | não, são analisados mas não geram quadro — o motivo nomeia o esquema |
| Entrelaçado: os dois campos são unidos em um quadro | sim |
| Transporte por campos (segmented) | a caixa é aceita mas ainda não afeta a recepção |
Áudio 2110-30: L16 e L24, qualquer número de canais, ptime do SDP |
sim |
| Dados auxiliares 2110-40: despacotamento, soma de verificação, contadores | sim |
| Teletexto OP-47 como trilha de teletexto | sim |
| Legendas CEA-708/608 | analisadas e contadas, não entregues como trilha |
| Endereçamento por arquivo de transporte (SDP) enviado por um controlador | sim |
| Inscrição em um emissor específico (SSM, IGMPv3) | sim |
| Várias trilhas de um mesmo tipo em uma entrada | sim |
| NMOS IS-04: anúncio do nó, mDNS, registro em um registry | sim |
| NMOS IS-05: receptores comutados por um controlador | sim |
| A estação descobrir emissores alheios por conta própria | não, o endereço vem de um controlador ou de um operador |
| SDP com várias linhas de mídia em uma trilha | não, um bloco de endereçamento descreve uma trilha |
| Saída 2110 (a estação como emissora) | não |
Aplicação das mudanças¶
Mudar o grupo, a porta, o emissor ou o arquivo de transporte recria o socket com uma inscrição nova — a recepção daquela trilha é interrompida enquanto as demais seguem. Os campos que não afetam a recepção são aplicados na hora.
Verificação¶
Verifique nesta ordem, porque cada passo só faz sentido depois que o anterior passou:
- Os pacotes chegam —
tcpdump -i <interface> host <grupo>na própria máquina da estação. Uma verificação de uma máquina vizinha não responde a esta pergunta: a entrega do grupo segue a inscrição, e quem a fez foi a estação. - As trilhas subiram — o cartão do bloco Saúde das fontes mostra o conjunto de trilhas e o bitrate de recepção.
- O relógio não se desviou — o desvio do relógio no status do stream. Sem sincronização o arquivo e o rebobinar param de funcionar, e a cura está no domínio PTP, não nas configurações da entrada.
- A imagem é a esperada — a prévia do stream: a geometria e a subamostragem são definidas à mão no endereçamento manual, e um erro ali dá linhas tortas em vez de uma recusa a receber.
Um script para uma bancada sem controlador¶
Uma bancada de testes normalmente não tem controlador NMOS, e ainda assim os endereços dos grupos são necessários: na maioria dos emissores eles mudam de uma ativação para outra, então anotá-los uma vez não funciona.
Para esse caso vai anexado um pequeno script — nmosctl.py. Ele precisa apenas de Python 3; não tem dependências, e para encontrar nós é usado o avahi-browse.
python3 nmosctl.py discover # nós na rede (mDNS)
python3 nmosctl.py list 10.0.0.90:8090 # dispositivos, emissores, receptores
python3 nmosctl.py enable 10.0.0.90:8090 <sender> # habilitar um emissor
python3 nmosctl.py sdp 10.0.0.90:8090 <sender> # o arquivo de transporte dele
O texto que o sdp devolve é o que um controlador traz ao comutar uma trilha: na bancada ele serve para conferir o endereçamento à mão, e dele se copiam o grupo, a porta e o formato.
Os dois tropeços mais frequentes:
- Enquanto um emissor não estiver habilitado não há arquivo de transporte — o
sdpresponde com erro, porque o endereço do grupo aparece só na ativação. - O endereço muda a cada ativação. Pegue-o de novo em vez de tirá-lo das suas anotações: uma inscrição no grupo anterior dá zero pacotes em silêncio.
O que vem a seguir¶
- Transcodifique o fluxo — o perfil depois do qual um sinal não comprimido reproduz e grava.
- Adicione uma entrada reserva — uma segunda fonte e as regras de comutação.
- Erros de entrada — o que os contadores significam quando um sinal se degrada.
- Devolva o sinal à rede.