Skip to content

Commit

Permalink
Update list of issues again. (#66)
Browse files Browse the repository at this point in the history
  • Loading branch information
kixelated authored Oct 24, 2023
1 parent edcaadc commit 1998123
Showing 1 changed file with 35 additions and 34 deletions.
69 changes: 35 additions & 34 deletions web/src/pages/issues.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,40 @@ 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

See the [moq-js](https://github.com/kixelated/moq-js/issues) issues for a full list. There's a lot of small things that won't make it here.

#### 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

Expand All @@ -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. |

0 comments on commit 1998123

Please sign in to comment.