Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Must join all XxxConsumer classes into a single one #1359

Open
ibc opened this issue Mar 26, 2024 · 0 comments
Open

Must join all XxxConsumer classes into a single one #1359

ibc opened this issue Mar 26, 2024 · 0 comments

Comments

@ibc
Copy link
Member

ibc commented Mar 26, 2024

Details

  • In C++ we currently have a parent abstract Consumer class and then SimpleConsumer, SimulcastConsumer, SvcConsumer and PipeConsumer that inherit from Consumer.
  • Those classes are intended to handle different producing scenarios and associated codecs.
  • For example a video transmission could use VP8 in single stream mode so it would use SingleConsumer.
  • Or with N streams in simulcast mode so it would use SimulcastConsumer.

Problems

  • Those classes do not represent real scenarios.
  • For example, a producer may perfectly use VP8 with a single stream (so this is not simulcast) and temporal layers. We currently manage it in SimulcastConsumer since it's the one ready for VP8 codec, but this is SVC.
  • VP9 is supposed to be SVC, however in libwebrtc now it's possible to produce real simulcast using VP9 (probably also with temporal layers): https://groups.google.com/g/discuss-webrtc/c/-QQ3pxrl-fw

Proposal

  • Have a single Consumer class ready to deal with all use cases and all supported codecs.
  • This would also help in the future when we implement the ability to switch from a producer to another in the same consumer.
  • We should also reconsider those producer.type and consumer.type ("single", "simulcast", "svc" and "pipe") since they don't make any sense. However this would introduce breaking changes. Let's see how to do it.
@ibc ibc added this to the v3 updates milestone Mar 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

1 participant