# VerseVDI complete media datagram v2 Datagram v2 carries one complete encoded video or audio unit under one sequence. It is negotiated explicitly as `datagram-v2`; v1 bytes are never reinterpreted. The gateway relays encoded bytes without codec processing or provider exposure. All multi-byte integers are unsigned big-endian. The fixed header is 23 bytes: | Offset | Size | Field | Rule | |---:|---:|---|---| | 0 | 2 | magic | ASCII `VD` (`0x56 0x44`) | | 2 | 1 | version | `2` only | | 3 | 1 | channel | `media.video.v1` (10) or `media.audio.v1` (11) | | 4 | 1 | flags | zero; unknown bits reject | | 5 | 4 | sequence | session-local wrapping complete-unit sequence | | 9 | 8 | timestamp_ms | sender timestamp, bounded by transport skew policy | | 17 | 2 | fragment_index | zero-based | | 19 | 2 | fragment_count | 1 through 891; index less than count | | 21 | 2 | payload_length | exact payload byte count, at most 1,177 | Each QUIC datagram is at most 1,200 bytes. One complete unit is at most 1,048,576 encoded bytes and 891 fragments. A sender rejects a larger unit before fragmentation. A receiver retains at most four incomplete media units and only received fragment bytes. Fragments for one unit must agree on channel, sequence, timestamp, flags, and count. Exact duplicates are ignored; conflicting duplicates reject that unit. Bounded reorder is accepted. An incomplete unit expires after 250 milliseconds, and accepting a fifth incomplete unit evicts the oldest. Reassembly checks the 1,048,576-byte ceiling before appending and emits only after every fragment is present.