Skip to content

Implement DRAFT-06 Support #25

@mcintyrehh

Description

@mcintyrehh

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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions