# Hackathon IETF Prague 118 ## MoqTransport Reference libraries are available at [moq-rs](https://github.com/kixelated/moq-rs) and [moq-js](https://github.com/kixelated/moq-js). The Rust library is [well documented](https://docs.rs/moq-transport/latest/moq_transport/) but the web library, not so much. **TODO** Update both to draft-01. **TODO** Switch any remaining forks over to extensions. ex: track_id in SUBSCRIBE The stream mapping right now is quite rigid: `stream == group == object`. **TODO** Support multiple objects per group. They MUST NOT use different priorities, different tracks, or out-of-order sequences. The API and cache aren't designed to send/receive arbitrary objects over arbitrary streams as specified in the draft. I don't think it should, and it wouldn't be possible to implement in time for the hackathon anyway. **TODO** Make an extension to enforce this stream mapping? ## Generic Relay I'm hosting a simple CDN at: `relay.quic.video` The traffic is sharded based on the WebTransport path to avoid namespace collisions. Think of it like a customer ID, although it's completely unauthenticated for now. Use your username or whatever string you want: `CONNECT https://relay.quic.video/alan`. **TODO** Currently, it performs an implicit `ANNOUNCE ""` when `role=publisher`. This means there can only be a single publisher per shard and `role=both` is not supported. I should have explicit `ANNOUNCE` messages supported before the hackathon to remove this limitation. **TODO** I don't know if I will have subscribe hints fully working in time. They will be parsed but might be ignored. ## CMAF Media You can [publish](https://quic.video/publish) and [watch](https://quic.video/watch) broadcasts. There's a [24/7 bunny stream](https://quic.video/watch/bbb) or you can publish your own using [moq-pub](https://github.com/kixelated/moq-rs/tree/main/moq-pub). If you want to fetch from the relay directly, the name of the broadcast is the path. For example, `https://quic.video/watch/bbb` can be accessed at `relay.quic.video/bbb`. The namespace is empty and the catalog track is `.catalog`. I'm currently using simple JSON catalog with no support for delta updates. **TODO** update to the proposed [Warp catalog](https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/). The media tracks uses a single (unbounded) object per group. Video groups are per GoP, while audio groups are per frame. There's also an init track containing information required to initialize the decoder. **TODO** Base64 encode the init track in the catalog. ## Clock **TODO** Host a clock demo that sends a group per second: ``` GROUP: YYYY-MM-DD HH:MM OBJECT: SS ```