-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
Milestone
Description
Details
- In C++ we currently have a parent abstract
Consumerclass and thenSimpleConsumer,SimulcastConsumer,SvcConsumerandPipeConsumerthat inherit fromConsumer. - 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
SimulcastConsumersince 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
Consumerclass 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.typeandconsumer.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.
Reactions are currently unavailable