diff --git a/web/src/pages/issues.mdx b/web/src/pages/issues.mdx index df56473..81074b4 100644 --- a/web/src/pages/issues.mdx +++ b/web/src/pages/issues.mdx @@ -7,7 +7,7 @@ title: 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. +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 @@ -15,31 +15,32 @@ See the [moq-js](https://github.com/kixelated/moq-js/issues) issues for a full l #### General -| issue | name | description | -| ---------------------------------------------------: | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [#54](https://github.com/kixelated/moq-js/issues/54) | WebTransport - Safari | No Safari support yet. Webkit has expressed [public support](https://github.com/WebKit/standards-positions/issues/18#issuecomment-1495890122) so it will likely show up one day. | -| [#55](https://github.com/kixelated/moq-js/issues/55) | WebCodecs - Firefox | No Firefox support yet. Firefox has marked it [worth prototyping](https://github.com/mozilla/standards-positions/issues/209) but I haven't heard any updates. | -| [#56](https://github.com/kixelated/moq-js/issues/56) | WebCodecs - Multiple Tracks | You can't add/remove tracks once the broadcast has started, such as to change input device or screen share. | -| [#13](https://github.com/kixelated/moq-js/issues/13) | WebCodecs - Codec Support | WebCodecs supports a lot of codecs, but they need to be configured and packaged into MP4. | -| [#57](https://github.com/kixelated/moq-js/issues/57) | UI - Make it Pretty | Unfortunately, I'm not an artist. | +| issue | name | description | +| ---------------------------------------------------: | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [#54](https://github.com/kixelated/moq-js/issues/54) | WebTransport - Safari | No Safari support yet. Webkit has expressed [public support](https://github.com/WebKit/standards-positions/issues/18#issuecomment-1495890122) so it will likely show up one day. | +| [#55](https://github.com/kixelated/moq-js/issues/55) | WebCodecs - Firefox | No Firefox support yet. Firefox has an implementation on nightly [behind a flag](https://groups.google.com/a/mozilla.org/g/dev-platform/c/3g0fnn6682A/m/Nb1qVaA4AAAJ). | +| [#13](https://github.com/kixelated/moq-js/issues/13) | General - Codec Support | WebCodecs supports a lot of codecs, but they need to be configured and correctly packaged into MP4. | +| [#65](https://github.com/kixelated/moq-js/issues/65) | General - Optional Tracks | You can't publish/subscribe to optional tracks, which is required for any form of ABR. | +| [#56](https://github.com/kixelated/moq-js/issues/56) | General - Dynamic Tracks | You can't add/remove tracks once a broadcast has started, such as to change input device or screen share. | +| [#57](https://github.com/kixelated/moq-js/issues/57) | UI - Make it Pretty | Obviously, I'm not an artist. | #### Playback -| issue | name | description | -| ---------------------------------------------------: | --------------------------- | --------------------------------------------------------------------------------------------- | -| [#6](https://github.com/kixelated/moq-js/issues/6) | WebCodecs - Controls | There are no player controls. Even a volume slider would be great. | -| [#9](https://github.com/kixelated/moq-js/issues/9) | WebCodecs - Jitter Buffer | Received frames are rendered ASAP. The user experience could be improved with a small buffer. | -| [#58](https://github.com/kixelated/moq-js/issues/58) | WebCodecs - Synchronization | Audio and video are rendered out-of-sync. This is surprisingly difficult to implement. | -| [#59](https://github.com/kixelated/moq-js/issues/59) | MSE - Player | There's a backup MSE player for Firefox but it needs more love. | +| issue | name | description | +| ---------------------------------------------------: | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| [#6](https://github.com/kixelated/moq-js/issues/6) | WebCodecs - Controls | There are no player controls. Even a volume slider would be great. | +| [#9](https://github.com/kixelated/moq-js/issues/9) | WebCodecs - Jitter Buffer | Received frames are rendered ASAP. The user experience could be improved with a playback buffer sized to the target latency. | +| [#58](https://github.com/kixelated/moq-js/issues/58) | WebCodecs - Synchronization | Audio and video are rendered out-of-sync. This is surprisingly difficult to implement, especially with a variable playback buffer. | +| [#59](https://github.com/kixelated/moq-js/issues/59) | MSE - Player | There's a backup MSE player for Firefox but it needs more love. | #### Publishing -| issue | name | description | -| ---------------------------------------------------: | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [#60](https://github.com/kixelated/moq-js/issues/60) | WebTransport - Prioritization | Media should be prioritized by the sender during congestion. Use [priority hints](https://www.w3.org/TR/webtransport/#dom-webtransportsendstreamoptions-sendorder) when implemented. | -| [#61](https://github.com/kixelated/moq-js/issues/61) | WebTransport - Congestion Control | Reno/CUBIC (default) suffers from buffer bloat. Use [congestion control hints](https://www.w3.org/TR/webtransport/#dom-webtransport-congestioncontrol) when implemented. | -| [#62](https://github.com/kixelated/moq-js/issues/62) | WebCodecs - Echo Cancelation | We need to support bidirectional broadcasts and rooms, which means echo cancellation. | -| [#49](https://github.com/kixelated/moq-js/issues/49) | UI - Public Broadcasts | We should have a way to publish and list public broadcasts. | +| issue | name | description | +| ---------------------------------------------------: | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [#60](https://github.com/kixelated/moq-js/issues/60) | WebTransport - Prioritization | Media should be prioritized by the sender during congestion via [priority hints](https://www.w3.org/TR/webtransport/#dom-webtransportsendstreamoptions-sendorder) when implemented. | +| [#61](https://github.com/kixelated/moq-js/issues/61) | WebTransport - Congestion Control | Reno/CUBIC (default) suffers from [bufferbloat](https://en.wikipedia.org/wiki/Bufferbloat). At least use BBR via [congestion control hints](https://www.w3.org/TR/webtransport/#dom-webtransport-congestioncontrol) when implemented. | +| [#62](https://github.com/kixelated/moq-js/issues/62) | WebCodecs - Echo Cancelation | We need to support bidirectional broadcasts at some point, which requires echo cancellation. | +| [#49](https://github.com/kixelated/moq-js/issues/49) | UI - Public Broadcasts | We should have a way to publish and list public broadcasts. | # Native @@ -54,29 +55,29 @@ See the [moq-rs](https://github.com/kixelated/moq-rs/issues) issues for a full l #### Publishing -| issue | name | description | -| -----------------------------------------------------: | ------------------- | -------------------------------------------------------------------------------------------------------------- | -| [#63](https://github.com/kixelated/moq-rs/issues/63) | libmoq - C Bindings | Make a C library to interface with moq-rs. | -| [#105](https://github.com/kixelated/moq-rs/issues/105) | libmoq - OBS | Develop an [OBS](https://obsproject.com/) plugin. | -| [#106](https://github.com/kixelated/moq-rs/issues/106) | libmoq - ffmpeg | Develop an [ffmpeg](https://www.ffmpeg.org/) plugin. Piping to stdin currently works but it could be improved. | -| [#107](https://github.com/kixelated/moq-rs/issues/107) | libmoq - GStreamer | Develop a [GStreamer](https://gstreamer.freedesktop.org/) plugin. | +| issue | name | description | +| -----------------------------------------------------: | ------------------- | --------------------------------------------------------------------------------------------------------------------- | +| [#63](https://github.com/kixelated/moq-rs/issues/63) | libmoq - C Bindings | Make a C library to interface with moq-rs. Any networking/caching/async is hidden from the application. | +| [#105](https://github.com/kixelated/moq-rs/issues/105) | libmoq - OBS | Develop an [OBS](https://obsproject.com/) plugin. | +| [#106](https://github.com/kixelated/moq-rs/issues/106) | libmoq - ffmpeg | Develop an [ffmpeg](https://www.ffmpeg.org/) plugin. We currently pipe to stdin which works but it could be improved. | +| [#107](https://github.com/kixelated/moq-rs/issues/107) | libmoq - GStreamer | Develop a [GStreamer](https://gstreamer.freedesktop.org/) plugin. | #### Relay | issue | name | description | | -----------------------------------------------------: | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [#108](https://github.com/kixelated/moq-rs/issues/108) | Relay - Cache Network | The relays form a mesh network. This won't scale past a few nodes. | +| [#108](https://github.com/kixelated/moq-rs/issues/108) | Relay - Cache Network | The relays form a mesh network. This won't scale past a few nodes; we need some sort of cache tree. | | [#109](https://github.com/kixelated/moq-rs/issues/109) | Relay - Observability | There's no logging, metrics, or even health checks. I don't even know if the site is up. | | [#110](https://github.com/kixelated/moq-rs/issues/110) | Relay - Scaling | Everything is in [terraform](https://github.com/kixelated/quic.video) but otherwise everything is manual, including the number of instances. | | [#111](https://github.com/kixelated/moq-rs/issues/111) | Relay - Pool Sessions | Clients establish a QUIC connection per broadcast. We should investigate reusing connections via ANNOUNCE like the specification intends. | # Protocol -Gotta argue at the next [IETF](https://www.ietf.org/) and/or [W3C](https://www.w3.org/) meeting about these ones. +See [moq-transport](https://github.com/moq-wg/moq-transport/issues) for a much bigger list. Gotta argue at the next [IETF](https://www.ietf.org/) and/or [W3C](https://www.w3.org/) meeting about these ones. -| name | description | -| ---------------------------- | --------------------------------------------------------------------------------------------------------------- | -| QUIC - Congestion Congestion | QUIC needs an extension in order to match WebRTC's transport-wide-cc. | -| Transport - Catalog | MoQ wll use a JSON catalog to describe the available tracks, but it needs some more work. | -| Transport - Containers | MoQ supports fMP4 at the moment, but it introduces quite a bit of overhead. | -| Transport - Feedback | There's no way to signal that a downstream is encountering congestion. This would be useful for 1:1 broadcasts. | +| issue | name | description | +| -------------------------------------------------------: | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [#37](https://github.com/moq-wg/moq-transport/issues/37) | QUIC - Congestion Congestion | QUIC needs an extension in order to match WebRTC's [transport-wide-cc](https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/transport-wide-cc-02/README.md). | +| #XX | Transport - Catalog | MoQ wll use a JSON catalog to describe the available tracks, but it needs some more work. | +| #XX | Transport - Containers | MoQ supports fMP4 at the moment, but it introduces quite a bit of overhead and we need other options. | +| #XX | Transport - Feedback | There's no way to signal that a downstream is encountering congestion. This would be useful for 1:1 broadcasts. |