Skip to content

Must join all XxxConsumer classes into a single one #1359

@ibc

Description

@ibc

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions