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
Copy file name to clipboardExpand all lines: docs/transport-plan.md
+9-7Lines changed: 9 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ This separation is important because MOQT draft churn should be isolated to the
71
71
72
72
-[x] Publish initialization object first
73
73
-[x] Publish media objects according to `PublishPlan`
74
-
-[] Decide and document one stream mapping policy
74
+
-[x] Decide and document one stream mapping policy
75
75
-[ ] Handle transport write backpressure
76
76
77
77
### Phase 5: observability and testing
@@ -81,14 +81,14 @@ This separation is important because MOQT draft churn should be isolated to the
81
81
-[x] Add loopback integration tests for transport
82
82
-[ ] Add interoperability tests against an OpenMOQ-capable endpoint
83
83
84
-
## Proposed stream mapping
84
+
## Stream mapping
85
85
86
-
Initial recommendation:
86
+
Current policy:
87
87
88
88
- one bidirectional control stream per session
89
-
- one unidirectional stream per published object in the first implementation
89
+
- one unidirectional stream per published object
90
90
91
-
That policy is not necessarily optimal long-term, but it is easier to reason about and validate while the control-plane logic is still moving.
91
+
This remains intentionally conservative. It keeps object boundaries explicit and makes current draft-specific control and subscriber-serving logic easier to validate. Stream reuse is still a possible future optimization once backpressure handling is in place.
92
92
93
93
## Interface responsibilities
94
94
@@ -149,16 +149,18 @@ Owns:
149
149
- The current workspace now compiles picoquic and picotls successfully.
150
150
- A loopback smoke test now validates the local picoquic handshake and object publication path when it is run outside restricted sandboxes.
151
151
- The session layer now uses a dedicated control-message encoder that keeps draft-14 and draft-16 naming differences out of the transport adapter.
152
+
- Subscriber-driven serving is implemented for `--forward 0`, including multitrack publication in publish-plan/media-time order rather than draining one subscribed track completely before the next.
153
+
- Incremental downstream `SUBSCRIBE` handling now lets later-arriving tracks join future object servicing without restarting the session or losing interleaving for remaining media objects.
152
154
153
155
## Key risks
154
156
155
157
- draft-14 vs draft-16 control differences leaking into transport code
156
158
- coupling picoquic callback state too tightly to publish scheduling
157
-
-under-specifying how objects map to streams early on
159
+
-incomplete backpressure behavior once object volume or pacing pressure increases
158
160
159
161
## Mitigations
160
162
161
163
- keep draft-specific message encoding in session code
162
164
- keep transport status and callbacks generic
163
-
-start with a conservative one-object-per-stream policy
165
+
-keep the current one-object-per-stream policy until backpressure and reuse semantics are explicit
164
166
- add integration tests before optimizing stream reuse or pacing
0 commit comments