You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: correct README implementation status against actual code
The status tables and state-machine notes had drifted from the code and
understated what's wired into the live session path: pause/seek/receiveAudio/
receiveVideo/closeStream, deleteStream teardown, onMetaData relay, User
Control messages, exvideo/exaudio parsing, fourCcList echo, E-RTMP v2 caps
negotiation (CAPS_NEGOTIATED is actually entered), and multitrack/ModEx are
all implemented in session/conn.rs and server/mod.rs, not just library code.
Also fixed the repo structure listing (amf/ and chunk/ are directories, not
files; media/ and net.rs were missing).
|`FCUnpublish` / `deleteStream`|Done — clears publish route, play state (`is_playing`/`paused`), and sends `StreamEOF`|
251
258
| Audio / video ingest and relay | Done |
252
259
| Aggregate messages | Done (unpack → relay) |
253
-
| Publisher `onMetaData` parsing (stats) | Done — not relayed to players |
260
+
| Publisher `onMetaData` parsing (stats) | Done — relayed live to players and cached for late joiners|
254
261
| AMF3 shared objects | Not implemented |
255
-
| User Control `StreamBegin` / `StreamEOF` / `SetBufferLength`|Encode/decode helpers only — not sent or handled in session|
262
+
| User Control `StreamBegin` / `StreamEOF` / `SetBufferLength`|Done — `StreamBegin`/`SetBufferLength` sent on `play`, `StreamEOF` sent on `deleteStream`/`closeStream`, inbound `SetBufferLength` read and stored|
256
263
| One stream per connection (`current_stream`) | By design today |
257
-
| Init-frame cache for late joiners | Legacy H.264 (`0x17`) + AAC only|
264
+
| Init-frame cache for late joiners | Legacy H.264 (`0x17`) + AAC, plus enhanced (ex-header) and multitrack sequence starts per track|
| v2 capability negotiation in session | Not implemented |
276
-
| Reconnect / multitrack / ModEx in session | Not implemented |
281
+
|`capsEx`, `videoFourCcInfoMap`, `reconnect`, `multitrack`, `modex` parse/write | Library code + unit tests, also wired into the session (see below) |
282
+
| v2 capability negotiation in session | Done — `negotiate_caps()` runs on `connect` when the client advertises v2 caps; state transitions to `CAPS_NEGOTIATED` and the response echoes negotiated caps |
283
+
| Multitrack / ModEx in session | Done — ModEx normalized on every ingested frame; multitrack containers demuxed per track for codec authorization and per-track init-cache headers |
284
+
| Reconnect in session | Not implemented — capability flag is echoed back but no reconnect-redirect protocol logic exists |
277
285
278
286
### Client, TLS, tests
279
287
280
288
| Area | Status |
281
289
|------|--------|
282
290
| Minimal publish client | Done |
283
-
| Minimal play client (A/V receive callback) | Done — no metadata/aggregate on play|
291
+
| Minimal play client (A/V receive callback) | Done — also delivers metadata (AMF0/AMF3 data) and handles Aggregate messages|
0 commit comments