About this project
Media Transport Library (MTL) is an open-source, software-based media transport stack aimed at high-throughput, low-latency transmission and reception of media data over IP networks. It includes a built-in implementation of the SMPTE ST 2110 suite for professional media over managed IP networks, and is designed to run on commercial off-the-shelf (COTS) hardware rather than specialized appliances.
Approach and architecture
MTL addresses the strict timing requirements of ST 2110 streams in software by leveraging common CPU platforms and conventional NICs with rate-limiting capabilities. It builds on DPDK's Environment Abstraction Layer for memory and core management, and introduces a virtual data path backend layer that presents a unified packet TX/RX interface to upper layers. Three backend types are supported:
- DPDK Poll-Mode Drivers (PMDs), which bypass the kernel networking stack for direct hardware access and avoid user/kernel context switches and IRQ handling.
- Native Linux kernel network socket stack, for compatibility with the broader kernel ecosystem.
- AF_XDP with an eBPF filter, balancing performance with kernel integration.
A tasklet-based asynchronous scheduler is used to optimize CPU utilization and to integrate with packet processing units and accelerators. Packet pacing supports multiple algorithms, including RL (Rate Limit), which is partially hardware-offloaded, and TSC (Timestamp Counter), which is fully software-based. SIMD is used for big-endian/little-endian color space conversion, alongside DMA and plugin interfaces.
Features
- Data path backends: DPDK PMD, native kernel socket, and AF_XDP with eBPF filter.
- Non-root operation.
- Multi-process handling, with up to 8 NICs per process.
- Virtualization support via SR-IOV.
- Built-in PTP protocol with hardware timestamp offload.
- FFmpeg plugin, OBS (Open Broadcaster Software) plugin, and Intel Media SDK support.
- Native C/C++ API plus Python and Rust bindings.
ST 2110 capabilities
- Narrow and wide pacing, with a published compliance report for narrow pacing on the software solution.
- ST 2110-10, -20, -21, -30, -40 and ST 2022-7.
- Resolutions including 1080p, 1080i, 720p, 4K and 8K.
- Frame rates: 120, 119.88, 100, 60, 59.94, 50, 30, 29.97, 25, 24 and 23.98.
- All video formats listed in ST 2110-20, including YUV 4:2:2 10-bit.
- SIMD color space converter between big-endian and little-endian.
- ST 2110-22 with an encoder/decoder plugin interface.
- ST 2022-6 via an RTP passthrough interface.
- ST 2110-20 RX timing compliance parser with hardware RX timestamp offload.
Hardware notes
Ethernet support depends on the chosen backend. For DPDK PMD, the supported hardware list is maintained by the DPDK project. If a NIC is not supported by DPDK, kernel socket transport is available as a fallback. The project states that daily development and validation focus on Intel E810 and E830 series cards, and that behavior on other NICs is not guaranteed. Narrow TX pacing is only supported on Intel E810/E830 with DPDK PMD due to the rate-limit feature; other configurations must use TSC as the pacing source, which provides wide pacing only.
Building and running
Build instructions for DPDK, the library and sample applications are provided in the project's build guide, with a separate Windows build guide. Running the ST 2110 demo pipeline based on the DPDK PMD backend is covered in the run guide, with additional guides for Windows, Linux and Windows guest VMs using VF passthrough, AWS cloud environments, and the kernel socket path. A fuzzing guide is also included.
Development and contribution
Applications can be developed against the ST 2110 API described in the design guide. The repository documents a contribution workflow based on forking, branching and pull requests, and provides a single checkpatch script that installs pinned tooling via pre-commit, runs checks on commit, and verifies all tracked files. Formatting autofixes are applied with a companion script. The coding standard document is the reference for rules and where each check runs. Before opening a pull request, contributors are asked to run formatting and checks until clean, ensure the build and unit tests pass, add a test at the cheapest tier that can catch the change (unit, integration with VFs, or end-to-end acceptance), and use Conventional Commits-style messages.
Project status and licensing
The project notes that source code and features on the main branch are intended for testing or evaluation and are not production ready, with evaluated code tagged by release version. It is licensed under BSD 3-Clause and carries OpenSSF Scorecard and Best Practices badges, along with CI badges for base build, Coverity, linter, Trivy and dependency review. Related publications include an MHV'23 paper, an Intel whitepaper, and a 2022 DPDK Userspace Summit talk.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.