Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement DRAFT-06 Support #25

Open
7 of 14 tasks
mcintyrehh opened this issue Dec 23, 2024 · 2 comments
Open
7 of 14 tasks

Implement DRAFT-06 Support #25

mcintyrehh opened this issue Dec 23, 2024 · 2 comments

Comments

@mcintyrehh
Copy link
Contributor

mcintyrehh commented Dec 23, 2024

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:

@mcintyrehh
Copy link
Contributor Author

I'll be hacking away at this on my draft-06 branch. So far all I've done is update the Version support and add a placeholder message length. Without this the backend will fail silently 😅 without acknowledging a setup message has been sent.

@mcintyrehh mcintyrehh mentioned this issue Dec 27, 2024
14 tasks
@JoaquinBCh
Copy link
Contributor

For our player, does it make sense to implement SUBSCRIBE_NAMESPACE beyond just verifying that they are correctly implemented in moq-rs?
I imagine using a SUBSCRIBE_NAMESPACE for something like a video call, where I can subscribe to the audio and video streams of that call. But in our case, what would be a relevant use case for namespaces?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants