Quicr/libquicr

MOQT: Implement moqt protocol state machine

Closed this issue · 0 comments

Change the current libquicr implementation to be compliant with MOQT protocol state machine.

Most of libquicr works in a similar fashion to MOQT with the following changes:

  • Add additional connection parameters
  • Track alias needs to be created and conveyed via subscribe, server will accept (always) or deny with subscribe error
  • Publisher does not start sending after announce (aka publish intent). It waits till it receives a subscribe from the relay.
  • Consider sending announce cancel long with unannounce
  • Publisher matching will only be on namespace, not on track name. When the relay receives data from publisher, it will publish with a track alias that was created based on a matching received subscribe that includes both track namespace and name. The first and subsequent subscribes will be associated to this publisher track alias, enabling received objects with that track alias to be forwarded to all subscribers of the same track namespace/track name.
  • Publisher will not be able to send other tracks till it gets a subscribe from the relay for a specific track. Relay has no idea what to subscribe to (e.g., the relay knows nothing about namespaces or track names), therefore the relay requires some other client to first subscribe for it.
  • When subscribers are zero (similar to a reference count for a given object), the relay will unsubscribe