Data Streams
Delivery modes
Section titled “Delivery modes”MoQT objects are delivered via three mechanisms:
Subgroup streams
Section titled “Subgroup streams”Unidirectional QUIC streams carrying objects within a subgroup. Each stream has a header identifying the track, group, and subgroup, followed by a sequence of objects.
In draft-17, the subgroup stream header uses a bitfield format with flags for properties, subgroup ID mode, end-of-group, and default priority. The subgroup ID mode determines whether the subgroup ID is zero, derived from the first object ID, or explicitly encoded.
Fetch streams
Section titled “Fetch streams”Unidirectional QUIC streams used for FETCH responses. The stream type is 0x05 in draft-17. A fetch header identifies the request, followed by the requested objects in order.
Datagrams
Section titled “Datagrams”QUIC datagrams for ultra-low-latency delivery of small objects. No stream ordering guarantees. In draft-17, the datagram header also uses a bitfield format with flags for properties, end-of-group, zero object ID, default priority, and status.
Object headers
Section titled “Object headers”Each object on a stream includes:
- Object ID within the group
- Publisher priority — scheduling hint (omitted if the stream header sets the default-priority flag in draft-17)
- Object status — normal, end of group, end of track
- Extension data — optional extension bytes (replaces key-value extension headers in draft-17)
- Payload length and payload
Object status codes
Section titled “Object status codes”Status codes changed in draft-17:
| Status | Draft-14/16 | Draft-17 |
|---|---|---|
| Normal | 0x0 | 0x0 |
| End of Group | 0x1 | 0x3 |
| End of Track | 0x2 | 0x4 |
What moqtap shows
Section titled “What moqtap shows”All moqtap tools parse data stream headers and display:
- Track alias mapping to namespace + track name
- Group/object/subgroup IDs
- Priority and status fields
- Payload content (auto-detected as text, JSON, fMP4, or binary)
- Delivery mode (subgroup, fetch, or datagram)
The CLI shows data stream events inline with color-coded output (UNI for unidirectional streams, OBJ for object headers, DGRAM for datagrams). The browser extension provides a stream inspector with hex and JSON views. The desktop app displays objects in a structured object viewer.