Skip to main content
Content Delivery Protocols and Tools

Implementation Detail

In short
  • What this covers: the FLUTE library (rt-libflute) as sender and receiver, the media origin (rt-media-origin) and the CMMF encoder (rt-cmmf-encoder), judged against RFC 3926, 3450, 3451 and 5052, ETSI TS 126 346 and TS 126 517 (FLUTE for MBMS download and the MBS Distribution Session), ETSI TS 103 973 (CMMF) and the HLS and DASH specifications it packages for. Judged on the main branch of each repository on 2026-10-22.
  • Source of this page: every requirement is split into the cases its clause defines; each case was read against the code by one reader and then independently by a second, with a third reading where they disagreed. Cases that only the output of ffmpeg or a running system can settle are not shown.
  • Reference Media Application: the Android test app and test rig is a test tool for the origin and is not audited against a specification.

For what the specifications define, see the Standards page and the Technology page. For how to run the tools, see the Tutorials.

What the Reference Tools implement​

  • FLUTE sender: sends files with FLUTE over ALC and LCT using the Compact No-Code FEC scheme, with an FDT instance, MD5 digests, Cache-Control and ETag entries, gzip content encoding and a rate limit. It has no congestion control (the CCI field is always zero), no session description and no content-encoded FDT, and it does not support FEC Encoding IDs 129 and 130 or the Close Session and Close Object flags. Several outputs differ from TS 26.346: it writes Transfer-Length on every file, sends a gzip stream under the deflate label, computes Content-MD5 before encoding, writes Content-Type only when it is set, never writes Max-Number-of-Encoding-Symbols or Scheme-Specific-Info, and replaces an unfinished FDT instance at once instead of waiting.
  • FLUTE receiver: reassembles files from ALC packets, parses the FDT, checks Content-MD5 and inflates gzip content. It accepts only a 32-bit CCI, does not read the T and R flags with their SCT and ERT fields, handles 16-bit TSI and TOI only, inflates only objects whose decoded size is at most 16384 bytes, does not read content encoding or Content-Type at FDT instance level, does not support interleaved FDT instances, ignores the EXT_FTI of a file's own packets, does not support max-stale, and does not read Complete or FullFDT. It takes its session parameters as arguments and reads no session description.
  • Media origin: packages content with ffmpeg and serves DASH, HLS and CMAF over HTTP, with now-playing metadata added to HLS playlists. Most of the manifest and segment format is produced by ffmpeg and is outside what the repository decides. Where the repository decides, it differs in a few points: now-playing values are screened only for a few characters and are not normalised, the output directory is emptied at once when a channel starts, the live window is an operator setting, and segments carry a long-lived cache header though live segments are deleted after a few segments.
  • CMMF encoder: no encoder code exists on main; the repository holds a README, a licence and a banner image, so every requirement of ETSI TS 103 973 is absent. No CMMF receiver exists.

Implementation status​

Open a feature, then a requirement, to see each case and why. Filter by component and release.

  • Content Delivery Protocols and Tools.
  • Sender (FLUTE sender (Transmitter and FDT writer)): rt-libflute.
  • Receiver (FLUTE receiver (Receiver, FDT parser and file reassembly)): rt-libflute.
  • Origin (Media origin and packager (DASH, HLS and CMAF segments)): rt-media-origin.
  • CMMF encoder (CMMF Bitstream Generator (rt-cmmf-encoder; no code on main)): rt-cmmf-encoder.
  • CMMF receiver (CMMF Receiver and decoder (none exists)): .
  • Source: code read against every statement of the specifications on the project page; statements a component cannot meet by construction marked absent by group, 2026-10-22.
  • Not shown: 61 further cases (a specification or code outside the audit that could not be read; it could not be settled by reading the code; the readers disagreed, so the case is not shown).
3GPP release
133 of 268 implemented · 37 differ · 98 absentcases, over 60 requirements

✓ Implemented≠ Differs from the specification– Absent? Specification inconsistent: its text and its OpenAPI or tables disagreei Noted: observed, not a verdict against a clause

Congestion control and channels2 of 2 implemented
Content encoding4 of 11 implemented · 4 differ · 3 absent
Caching directives3 of 8 implemented · 5 absent
Security0 of 4 implemented · 4 absent
Session description0 of 3 implemented · 3 absent
Reception and operating modes8 of 21 implemented · 2 differ · 11 absent
FEC and blocking12 of 24 implemented · 12 absent
The File Delivery Table54 of 111 implemented · 22 differ · 35 absent
LCT header and extensions27 of 40 implemented · 13 absent
Sessions, objects and packets1 of 7 implemented · 5 differ · 1 absent
DASH over MBMS download18 of 28 implemented · 3 differ · 7 absent
Segment streaming4 of 9 implemented · 1 differs · 4 absent
Full audit for members

The full audit, with the code behind each verdict, is available to 5G-MAG members through Developer Tools.

Become a member · Request access

CMMF Encoder​

rt-cmmf-encoder encodes packaged media into Coded Multisource Media Format bitstreams for multisource delivery, per ETSI TS 103 973. Its README marks it as experimental and says that the repository is at its initial commit, with no encoder code yet. See the CMMF Encoder page.

Media Origin​

rt-media-origin is a config-driven media origin that packages content with ffmpeg as DASH, HLS or CMAF and delivers it over HTTP or real-time push protocols. Its README marks it as working. Sending over FLUTE is out of its scope: a FLUTE sender reads the packaged output folder. See the Media Origin page.

FLUTE Library​

rt-libflute is a FLUTE library with a transmitter and a receiver, marked "Under Development" in its README. See the FLUTE Library page.

Reference Media Application​

rt-media-android-application is an Android test app and a laptop test rig that check that each delivery method of the media origin arrives on a phone, plays, and matches the origin's configuration. See the Reference Media Application page.

Used with other projects​