À propos du projet

La Media Transport Library (MTL) est une pile de transport multimédia open source, basée sur logiciel, conçue pour la transmission et la réception à haut débit et faible latence de données multimédias sur les réseaux IP. Elle inclut une implémentation intégrée de la suite SMPTE ST 2110 pour les médias professionnels sur réseaux IP gérés, et est conçue pour fonctionner sur du matériel standard (COTS) plutôt que sur des appliances spécialisées. Approche et architecture MTL répond aux exigences temporelles strictes des flux ST 2110 dans le logiciel en exploitant des plateformes CPU courantes et des NIC conventionnels dotés de capacités de limitation de débit. Elle s'appuie sur l'Environment Abstraction Layer de DPDK pour la gestion mémoire et des cœurs, et introduit une couche backend de chemin de données virtuel qui présente une interface unifiée d'émission/réception de paquets aux couches supérieures. Trois types de backends sont pris en charge : - Les drivers DPDK Poll-Mode Drivers (PMD), qui contournent la pile réseau du noyau pour un accès direct au matériel et évitent les changements de contexte utilisateur/noyau ainsi que la gestion des IRQ. - La pile native de sockets réseau du noyau Linux, pour la compatibilité avec l'écosystème plus large du noyau. - AF_XDP avec un filtre eBPF, équilibrant performance et intégration au noyau. Un ordonnanceur asynchrone basé sur des tâches élémentaires (tasklets) est utilisé pour optimiser l'utilisation du CPU et s'intégrer aux unités de traitement de paquets et aux accélérateurs. Le rythme des paquets prend en charge plusieurs algorithmes, dont RL (Rate Limit), partiellement déchargé vers le matériel, et TSC (Timestamp Counter), entièrement basé sur logiciel. SIMD est utilisé pour la conversion d'espace colorimétrique grand boutiste/petit boutiste, aux côtés d'interfaces DMA et de plugins. Fonctionnalités - Backends de chemin de données : DPDK PMD, socket natif du noyau et AF_XDP avec filtre eBPF. - Fonctionnement sans privilèges root. - Gestion multi-processus, jusqu'à 8 NIC par processus. - Prise en charge de la virtualisation via SR-IOV. - Protocole PTP intégré avec déchargement horodatage matériel. - Plugin FFmpeg, plugin OBS (Open Broadcaster Software) et prise en charge Intel Media SDK. - API native C/C++ ainsi que liaisons Python et Rust. Capacités ST 2110 - Rythme étroit et large, avec un rapport de conformité publié pour le rythme étroit sur la solution logicielle. - ST 2110-10, -20, -21, -30, -40 et ST 2022-7. - Résolutions incluant 1080p, 1080i, 720p, 4K et 8K. - Fréquences d'images : 120, 119.88, 100, 60, 59.94, 50, 30, 29.97, 25, 24 et 23.98. - Tous les formats vidéo listés dans ST 2110-20, y compris YUV 4:2:2 10 bits. - Convertisseur d'espace colorimétrique SIMD entre grand boutiste et petit boutiste. - ST 2110-22 avec une interface de plugin encodeur/décodeur. - ST 2022-6 via une interface de transit RTP. - Analyseur de conformité temporelle RX ST 2110-20 avec déchargement horodatage RX matériel. Notes matérielles La prise en charge Ethernet dépend du backend choisi. Pour DPDK PMD, la liste matérielle supportée est maintenue par le projet DPDK. Si une NIC n'est pas supportée par DPDK, le transport par socket noyau est disponible comme solution de repli. Le projet indique que le développement quotidien et la validation se concentrent sur les cartes série Intel E810 et E830, et que le comportement sur d'autres NIC n'est pas garanti. Le rythme TX étroit n'est pris en charge que sur Intel E810/E830 avec DPDK PMD en raison de la fonctionnalité de limitation de débit ; les autres configurations doivent utiliser TSC comme source de rythme, ce qui fournit uniquement un rythme large. Compilation et exécution Les instructions de compilation pour DPDK, la bibliothèque et les applications d'exemple sont fournies dans le guide de build du projet, avec un guide de build Windows distinct. L'exécution du pipeline de démonstration ST 2110 basé sur le backend DPDK PMD est couverte dans le guide d'exécution, avec des guides supplémentaires pour Windows, Linux et machines virtuelles invitées Windows utilisant le transfert VF, les environnements cloud AWS et le chemin socket noyau. Un guide de fuzzing est également inclus. Développement et contribution Des applications peuvent être développées contre l'API ST 2110 décrite dans le guide de conception. Le dépôt documente un workflow de contribution basé sur le forking, les branches et les pull requests, et fournit un script unique checkpatch qui installe des outils épinglés via pre-commit, exécute des vérifications lors des commits et valide tous les fichiers suivis. Les corrections automatiques de formatage sont appliquées avec un script compagnon. Le document de norme de codage sert de référence pour les règles et où chaque vérification s'exécute. Avant d'ouvrir une pull request, il est demandé aux contributeurs d'exécuter le formatage et les vérifications jusqu'à propreté, de s'assurer que la compilation et les tests unitaires passent, d'ajouter un test au niveau le moins coûteux capable de détecter le changement (unitaire, intégration avec VFs ou acceptation de bout en bout), et d'utiliser des messages de type Conventional Commits. Statut du projet et licence Le projet note que le code source et les fonctionnalités sur la branche principale sont destinés aux tests ou à l'évaluation et ne sont pas prêts pour la production, le code évalué étant taggé par version de release. Il est sous licence BSD 3-Clause et porte les badges OpenSSF Scorecard et Best Practices, ainsi que des badges CI pour la compilation de base, Coverity, linter, Trivy et revue des dépendances. Publications connexes : un article MHV'23, un livre blanc Intel et une présentation au DPDK Userspace Summit 2022.