-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
As a stepping stone to our ambitious goal of implementing DRAFT-07 FETCH support, we should get a working DRAFT-06 implementation up and running.
To start we can focus on implementing the features that have already been completed in @englishm's moq-rs/pull/draft-06. I've sorted this list by "what'll break first" so we can work our way from getting the setup messages working -> playback. Feel free to correct what I've gotten wrong or fill in additional context or thoughts.
// Implemented in moq-rs
- Update supported version to V6 (
0xff000006) - Stream Header type ID changes
- Object payload length
- the v6 relay won't even acknowledge the setup messages without the length entry. There is no validation (yet), so we could just send any number, but we might as well actually calculate the bytes.
- Control message length
- Track namespace + track as ordered N-tuple of bytes + sequence of bytes
- Namespaces have been changed from bytes -> a tuple of bytes, so we'll need to make these updates before we can subscribe to a track.
- SubGroups
- I think currently the backend is just putting everything that was in the group into a single subgroup, so we'll just need to update the types/data structures and use the subgroup data where we were using the group data
// Less urgent/publisher stuff
- SUBSCRIBE_NAMESPACE / UNSUBSCRIBE_NAMESPACE and OKs
- ability to subscribe/unsubscribe to all of the tracks under a namespace. don't think this is a "must have" to get playback working, but it is implemented on the backend and would be fun to add
- Too many subscribes error message
- Remove missing group status
- don't think moq-js ever had this
// Not yet implemented in moq-rs
- MAX_SUBSCRIBE_ID control message
- Delivery timeout parameter
- Max Cache Duration parameter
- Error Code for Announce Cancel
- Additional Subscribe Errors
// TODO: audit DRAFT-06/DRAFT-07 diff to make sure we aren't implementing anything in 06 that was subsequently removed in 07.
Resources:
- MoQT 05->06 Spec Diff:
https://author-tools.ietf.org/iddiff?url1=draft-ietf-moq-transport-05&url2=draft-ietf-moq-transport-06&difftype=--html - @englishm's
moq-rsWIP diff for implementing V6 in the relay/publisher:
moq-transport draft-06 initial wire format updates cloudflare/moq-rs#8- the diff is also a great reference to see what the backend is expecting
- Facebook player MOQTv7 (minus FETCH) implementation:
https://github.com/facebookexperimental/moq-encoder-player/pull/21/files- The FB player jumped from 05->07 directly, so it has more than we need (for now!), but this will be a great reference for adding message lengths/tuple updates/etc.
Metadata
Metadata
Assignees
Labels
No labels