Issues

Yeah so there’s a lot of work to do.

This is an early PoC and hobby project, so expect nothing to work. This page is a summary of the major issues, updated periodically. If you want to help, leave a comment on the cooresponding ticket!

Web

See the moq-js issues for a full list. There’s a lot of small things that won’t make it here.

General

issuenamedescription
#54WebTransport - SafariNo Safari support yet. Webkit has expressed public support so it will likely show up one day.
#55WebCodecs - FirefoxNo Firefox support yet. Firefox has an implementation on nightly behind a flag.
#13General - Codec SupportWebCodecs supports a lot of codecs, but they need to be configured and correctly packaged into MP4.
#65General - Optional TracksYou can’t publish/subscribe to optional tracks, which is required for any form of ABR.
#56General - Dynamic TracksYou can’t add/remove tracks once a broadcast has started, such as to change input device or screen share.
#57UI - Make it PrettyObviously, I’m not an artist.

Playback

issuenamedescription
#6WebCodecs - ControlsThere are no player controls. Even a volume slider would be great.
#9WebCodecs - Jitter BufferReceived frames are rendered ASAP. The user experience could be improved with a playback buffer sized to the target latency.
#58WebCodecs - SynchronizationAudio and video are rendered out-of-sync. This is surprisingly difficult to implement, especially with a variable playback buffer.
#59MSE - PlayerThere’s a backup MSE player for Firefox but it needs more love.

Publishing

issuenamedescription
#60WebTransport - PrioritizationMedia should be prioritized by the sender during congestion via priority hints when implemented.
#61WebTransport - Congestion ControlReno/CUBIC (default) suffers from bufferbloat. At least use BBR via congestion control hints when implemented.
#62WebCodecs - Echo CancelationWe need to support bidirectional broadcasts at some point, which requires echo cancellation.
#49UI - Public BroadcastsWe should have a way to publish and list public broadcasts.

Native

See the moq-rs issues for a full list. There’s a lot of small things that won’t make it here.

General

issuenamedescription
#29Quinn - Congestion ControlQuinn experimentally supports BBR but it needs to be validated and possibly tweaked.
#104Quinn - TracingQuinn lacks the tracing required to validate the user experience. We should add qlog and other useful metrics.

Publishing

issuenamedescription
#112moq-pub - AudioThe ffmpeg/moq-pub integration doesn’t produce audio at the moment. It’s probably a simple fix.
#63libmoq - C BindingsMake a C library to interface with moq-rs. Any networking/caching/async is hidden from the application.
#105libmoq - OBSDevelop an OBS plugin.
#106libmoq - ffmpegDevelop an ffmpeg plugin. We currently pipe to stdin which works but it could be improved.
#107libmoq - GStreamerDevelop a GStreamer plugin.

Relay

issuenamedescription
#108Relay - Cache NetworkThe relays form a mesh network. This won’t scale past a few nodes; we need some sort of cache tree.
#109Relay - ObservabilityThere’s no logging, metrics, or even health checks. I don’t even know if the site is up.
#110Relay - ScalingEverything is in terraform but otherwise everything is manual, including the number of instances.
#111Relay - Pool SessionsClients establish a QUIC connection per broadcast. We should investigate reusing connections via ANNOUNCE like the specification intends.

Protocol

See moq-transport for a much bigger list. Gotta argue at the next IETF and/or W3C meeting about these ones.

issuenamedescription
#37QUIC - Congestion CongestionQUIC needs an extension in order to match WebRTC’s transport-wide-cc.
#XXTransport - CatalogMoQ wll use a JSON catalog to describe the available tracks, but it needs some more work.
#XXTransport - ContainersMoQ supports fMP4 at the moment, but it introduces quite a bit of overhead and we need other options.
#XXTransport - FeedbackThere’s no way to signal that a downstream is encountering congestion. This would be useful for 1:1 broadcasts.