- rt-libflute is a FLUTE sender and receiver. It is judged against every requirement of the FLUTE documents that falls on a sender or a receiver, in each of the four ways FLUTE is specified:
- Unprofiled FLUTE (RFC 3926 and its building blocks): 38 requirements in 107 cases: 79 implemented, 21 differ from the specification, 7 not implemented.
- FLUTE version 2 (RFC 6726): 17 cases: 15 implemented, 1 differs from the specification, 1 not implemented.
- MBMS download (TS 26.346, with the unprofiled requirements it keeps): 146 cases: 121 implemented, 20 differ from the specification, 3 not implemented, 2 where the specification contradicts itself.
- MBS Object Distribution (TS 26.517 and the MBMS Download Profile, with the unprofiled requirements they keep): 118 cases: 94 implemented, 21 differ from the specification, 3 not implemented.
- Releases: the 3GPP profiles are judged at Release 18 (TS 26.346 V18.2.0, TS 26.517 V18.6.0), the issues the code is built against; Release 17 gives the same result. At Release 19 (TS 26.346 V19.3.0, TS 26.517 V19.3.0), MBMS download has 120 of 146 cases implemented and MBS Object Distribution 93 of 118: the code writes the Release 18 FDT schema versions, 4 and 2, where Release 19 requires 5 and 3.
- Not judged here: session descriptions, reception and operating modes, caching policy and repair belong to the components that use the library: the MBS Client (rt-mbs-client) and the MBSTF (rt-mbs-transport-function) for MBS, the MBMS Client (rt-mbms-client) and the BM-SC (rt-mbms-bmsc) for MBMS; see below.
- Source of this page: a code audit of the repository, every open change read as merged: each requirement split into the cases its clauses define, then re-checked by a second reader.
For what the specifications define, see the Standards page and the Technical Analysis. For how to run the tools, see the Tutorials.
Unprofiled FLUTE
FLUTE version 1 as the IETF defines it: RFC 3926 on ALC and LCT, the FEC building block and schemes, and WEBRC congestion control. The 3GPP profiles keep most of these requirements as they are; the sections below give only what they change or add. Filter by component; open a feature, then a requirement.
- Unprofiled FLUTE: RFC 3926 (FLUTE version 1), RFC 3450 (ALC), RFC 3451 (LCT), RFC 5052 and RFC 3695 (FEC), RFC 5053 and RFC 6330 (Raptor, RaptorQ), RFC 3738 (WEBRC).
- Sender (FLUTE sender (Transmitter and FDT writer), and the senders built on it): rt-libflute. Built against: RFC 3926, RFC 3450 and RFC 3451; RFC 6726 for version 2; TS 26.346 and TS 26.517 at Release 18.
- Receiver (FLUTE receiver (Receiver, FDT parser and file reassembly), and the clients built on it): rt-libflute. Built against: the same.
- Source: code read against every requirement of the FLUTE documents in the library's scope, every open change read as merged into main, nothing built or run for the verdicts, 2026-10-06.
✓ Implemented≠ Differs from the specification– Absent? Specification inconsistent: its text and its OpenAPI or tables disagreei Noted: observed, not a verdict against a clauseSessions, objects and packets14 of 17 implemented · 2 differ · 1 absent
LCT header and extensions18 of 18 implemented
File Delivery Table21 of 27 implemented · 6 differ
FEC and blocking15 of 27 implemented · 10 differ · 2 absent
Congestion control and channels9 of 15 implemented · 3 differ · 3 absent
Content encoding2 of 3 implemented · 1 absent
FLUTE version 2
What RFC 6726, with ALC (RFC 5775) and LCT (RFC 5651), changes from version 1. Neither 3GPP profile uses it.
- FLUTE version 2: RFC 6726, RFC 5775 (ALC), RFC 5651 (LCT).
- Sender (FLUTE sender (Transmitter and FDT writer), and the senders built on it): rt-libflute. Built against: RFC 3926, RFC 3450 and RFC 3451; RFC 6726 for version 2; TS 26.346 and TS 26.517 at Release 18.
- Receiver (FLUTE receiver (Receiver, FDT parser and file reassembly), and the clients built on it): rt-libflute. Built against: the same.
- Source: code read against every requirement of the FLUTE documents in the library's scope, every open change read as merged into main, nothing built or run for the verdicts, 2026-10-06.
✓ Implemented≠ Differs from the specification– Absent? Specification inconsistent: its text and its OpenAPI or tables disagreei Noted: observed, not a verdict against a clauseSessions, objects and packets1 of 1 implemented
LCT header and extensions4 of 4 implemented
File Delivery Table8 of 10 implemented · 1 differs · 1 absent
FEC and blocking1 of 1 implemented
Congestion control and channels1 of 1 implemented
MBMS download
What TS 26.346 adds to FLUTE for MBMS download (clause 7.2 and annex A), and the MBMS Download Profile of annex L.4. Congestion control, RaptorQ, the other optional FEC schemes, the ERT bound and FDT content encoding are replaced by the profile, so the unprofiled cases for them do not count here.
- MBMS download: TS 26.346 V18.2.0 clause 7.2 and annex A.
- MBMS Download Profile: TS 26.346 V18.2.0 annex L.4, followed by both MBMS download and MBS Object Distribution.
- Sender (FLUTE sender (Transmitter and FDT writer), and the senders built on it): rt-libflute, rt-mbms-bmsc. Built against: RFC 3926, RFC 3450 and RFC 3451; RFC 6726 for version 2; TS 26.346 and TS 26.517 at Release 18.
- Receiver (FLUTE receiver (Receiver, FDT parser and file reassembly), and the clients built on it): rt-libflute, rt-mbms-client. Built against: the same.
- Source: code read against every requirement of the FLUTE documents in the library's scope, every open change read as merged into main, nothing built or run for the verdicts, 2026-10-06.
✓ Implemented≠ Differs from the specification– Absent? Specification inconsistent: its text and its OpenAPI or tables disagreei Noted: observed, not a verdict against a clauseLCT header and extensions14 of 15 implemented · 1 where the specification is inconsistent
File Delivery Table25 of 30 implemented · 3 differ · 2 absent
FEC and blocking11 of 14 implemented · 3 differ
Congestion control and channels3 of 3 implemented
Content encoding3 of 4 implemented · 1 where the specification is inconsistent
MBS Object Distribution
The MBMS Download Profile, which the MBS Distribution Session follows, and what TS 26.517 and the Profiled FDT Schema of annex L.6 add.
- MBMS Download Profile: TS 26.346 V18.2.0 annex L.4, followed by both MBMS download and MBS Object Distribution.
- MBS Object Distribution: TS 26.517 V18.6.0 clause 6.2, with the Profiled FDT Schema of TS 26.346 V18.2.0 annex L.6.
- Sender (FLUTE sender (Transmitter and FDT writer), and the senders built on it): rt-libflute, rt-mbs-transport-function. Built against: RFC 3926, RFC 3450 and RFC 3451; RFC 6726 for version 2; TS 26.346 and TS 26.517 at Release 18.
- Receiver (FLUTE receiver (Receiver, FDT parser and file reassembly), and the clients built on it): rt-libflute, rt-mbs-client. Built against: the same.
- Source: code read against every requirement of the FLUTE documents in the library's scope, every open change read as merged into main, nothing built or run for the verdicts, 2026-10-06.
✓ Implemented≠ Differs from the specification– Absent? Specification inconsistent: its text and its OpenAPI or tables disagreei Noted: observed, not a verdict against a clauseLCT header and extensions4 of 4 implemented
File Delivery Table18 of 25 implemented · 6 differ · 1 absent
FEC and blocking3 of 4 implemented · 1 differs
Congestion control and channels1 of 1 implemented
Judged with the clients and the MBSTF
rt-libflute is the FLUTE layer of four Reference Tools, one sender and one receiver for each 3GPP profile:
| Profile | Sender | Receiver |
|---|---|---|
| MBMS download | BM-SC (rt-mbms-bmsc) | MBMS Client (rt-mbms-client) |
| MBS Object Distribution | MBSTF (rt-mbs-transport-function) | MBS Client, its MBSTF Client (rt-mbs-client) |
These requirements of the same documents fall on those components rather than on the library:
| Feature | Documents | MBS Object Distribution | MBMS download |
|---|---|---|---|
| Session description | RFC 3926 section 6; TS 26.346 clause 7.3 and table L.4.8-1; TS 26.517 clause 6.2.2 | MBS Client and MBSTF: 5G MBS implementation | MBMS Client and BM-SC: not yet audited case by case |
| Reception and operating modes | TS 26.346 clause 7.2.0; TS 26.517 clause 6.2.3 | MBSTF: 5G MBS implementation | MBMS Client: not yet audited case by case |
| Caching policy | TS 26.346 clause 7.2.13 | MBS Client; the library reads the directives (above) | MBMS Client; the library reads the directives (above) |
| Repair and reception reporting | TS 26.346 clauses 9.3, 9.4 and 9.4B; TS 26.517 clause 6.2.4 | MBS Client: 5G MBS implementation | MBMS Client: not yet audited case by case |
This page summarises a requirement-by-requirement audit of the code. The full audit (each requirement with its clauses quoted, the code that meets or misses it, and the findings) is available to 5G-MAG members through Developer Tools (the Standards2Deployments repository).
rt-media-origin: packaging and delivery
A config-driven media origin: it packages each channel with ffmpeg as DASH, HLS or CMAF, and delivers it over HTTP or a push transport.
| Transport | Document it follows | What the receiving side needs |
|---|---|---|
http | HTTP | A DASH or HLS player |
rtsp | RFC 2326 (RTSP 1.0) | A server that accepts RTSP 1.0 publishing (ANNOUNCE and RECORD), such as MediaMTX; RFC 7826 (RTSP 2.0) removed both |
rtmp | Adobe RTMP 1.0 with FLV 10.1 | For HEVC, VP9, AV1 or VVC, Enhanced RTMP and a server that supports it |
srt | draft-sharabayko-srt-01 (expired) | A Stream ID declaring the mode when publishing to a relay |
rist | VSF TR-06-1:2020 (Simple Profile) | An even media port, RTCP on the next one |
rtp | RFC 2250 over RFC 3550 | A receiver for MPEG-TS over RTP, payload type 33 |
moq | draft-lcurley-moq-lite | A moq-lite relay, such as moq-dev's moq-relay |
flute | rt-media-origin API | FLUTE transmission is done by rt-libflute-based tooling; the origin publishes the session metadata |
It checks the manifests it produces against these named profiles. The checks cover manifest and segment signalling and structure, not codec or bitstream conformance.
| Profile | Specification |
|---|---|
| DASH-IF | ISO/IEC 23009-1, isoff-live-2011 |
| DVB-DASH | ETSI TS 103 285 |
| 5GMS DASH IOP | TS 26.247 clause 7.3.11 |
| CMAF | ISO/IEC 23009-1, urn:mpeg💨profile:cmaf:2019 |
| TV 720p HD | TS 26.116 |
| VR/OMAF Basic | TS 26.118 |
| DASH-IF Low-Latency | DASH-IF IOP v5 |
| HLS | RFC 8216 |
Coded Multisource Media Format (CMMF)
rt-cmmf-encoder is an early-stage reference implementation of ETSI TS 103 973, packaging content for delivery from more than one network source at once. It is not yet audited against the published standard.