Sobre o projeto

Media Transport Library (MTL) é uma pilha de transporte de mídia de código aberto e baseada em software, voltada para transmissão e recepção de dados de mídia com alta taxa de transferência e baixa latência sobre redes IP. Inclui uma implementação integrada do conjunto SMPTE ST 2110 para mídia profissional em redes IP gerenciadas, e é projetada para rodar em hardware comercial de prateleira (COTS), em vez de equipamentos especializados. Abordagem e arquitetura MTL atende aos requisitos rigorosos de temporização dos fluxos ST 2110 em software, aproveitando plataformas de CPU comuns e NICs convencionais com capacidades de limitação de taxa. Baseia-se na Camada de Abstração de Ambiente do DPDK para gerenciamento de memória e núcleos, e introduz uma camada de backend de caminho de dados virtual que apresenta uma interface unificada de TX/RX de pacotes para camadas superiores. Três tipos de backend são suportados: - Drivers de Modo de Polling (PMDs) do DPDK, que contornam a pilha de rede do kernel para acesso direto ao hardware e evitam trocas de contexto usuário/kernel e manipulação de IRQ. - Pilha nativa de sockets de rede do kernel Linux, para compatibilidade com o ecossistema mais amplo do kernel. - AF_XDP com filtro eBPF, equilibrando desempenho com integração ao kernel. Um agendador assíncrono baseado em tasklets é usado para otimizar o uso da CPU e integrar com unidades de processamento de pacotes e aceleradores. O pacing de pacotes suporta múltiplos algoritmos, incluindo RL (Rate Limit), que é parcialmente descarregado no hardware, e TSC (Timestamp Counter), que é totalmente baseado em software. SIMD é usado para conversão de espaço de cor big-endian/little-endian, juntamente com interfaces DMA e de plugins. Recursos - Backends de caminho de dados: DPDK PMD, socket nativo do kernel e AF_XDP com filtro eBPF. - Operação sem root. - Manipulação de múltiplos processos, com até 8 NICs por processo. - Suporte a virtualização via SR-IOV. - Protocolo PTP integrado com descarregamento de timestamp de hardware. - Plugin FFmpeg, plugin OBS (Open Broadcaster Software) e suporte ao Intel Media SDK. - API nativa C/C++ além de bindings Python e Rust. Capacidades ST 2110 - Pacing estreito e largo, com relatório de conformidade publicado para pacing estreito na solução de software. - ST 2110-10, -20, -21, -30, -40 e ST 2022-7. - Resoluções incluindo 1080p, 1080i, 720p, 4K e 8K. - Taxas de quadros: 120, 119.88, 100, 60, 59.94, 50, 30, 29.97, 25, 24 e 23.98. - Todos os formatos de vídeo listados no ST 2110-20, incluindo YUV 4:2:2 de 10 bits. - Conversor de espaço de cor SIMD entre big-endian e little-endian. - ST 2110-22 com interface de plugin de codificador/decodificador. - ST 2022-6 via interface de passagem RTP. - Parser de conformidade de temporização RX ST 2110-20 com descarregamento de timestamp RX de hardware. Notas de hardware O suporte Ethernet depende do backend escolhido. Para DPDK PMD, a lista de hardware suportado é mantida pelo projeto DPDK. Se uma NIC não for suportada pelo DPDK, o transporte por socket de kernel está disponível como alternativa. O projeto afirma que o desenvolvimento e a validação diários focam nas placas Intel E810 e E830, e que o comportamento em outras NICs não é garantido. O pacing TX estreito é suportado apenas em Intel E810/E830 com DPDK PMD devido ao recurso de limitação de taxa; outras configurações devem usar TSC como fonte de pacing, que fornece apenas pacing largo. Compilação e execução Instruções de compilação para DPDK, a biblioteca e aplicativos de exemplo são fornecidas no guia de compilação do projeto, com um guia separado para Windows. A execução do pipeline de demonstração ST 2110 baseado no backend DPDK PMD é coberta no guia de execução, com guias adicionais para Windows, Linux e VMs convidadas Linux usando passagem de VF, ambientes de nuvem AWS e o caminho de socket de kernel. Um guia de fuzzing também está incluído. Desenvolvimento e contribuição Aplicativos podem ser desenvolvidos contra a API ST 2110 descrita no guia de design. O repositório documenta um fluxo de trabalho de contribuição baseado em fork, branch e pull requests, e fornece um único script checkpatch que instala ferramentas fixadas via pre-commit, executa verificações no commit e valida todos os arquivos rastreados. Correções automáticas de formatação são aplicadas com um script complementar. O documento de padrão de codificação é a referência para regras e onde cada verificação é executada. Antes de abrir um pull request, os contribuidores são solicitados a executar formatação e verificações até ficarem limpos, garantir que a compilação e os testes de unidade passem, adicionar um teste no nível mais barato que possa capturar a mudança (unidade, integração com VFs ou aceitação ponta a ponta) e usar mensagens no estilo Conventional Commits. Status do projeto e licenciamento O projeto observa que o código-fonte e os recursos no branch principal são destinados a testes ou avaliação e não estão prontos para produção, com código avaliado marcado por versão de lançamento. É licenciado sob BSD 3-Clause e possui selos OpenSSF Scorecard e Best Practices, além de selos de CI para compilação base, Coverity, linter, Trivy e revisão de dependências. Publicações relacionadas incluem um artigo MHV'23, um whitepaper da Intel e uma palestra no DPDK Userspace Summit de 2022.