Handling Transport-Wide-CC Feedback in a Custom Janus Plugin

Hello,

I am currently developing a custom plugin for Janus, similar to the VideoRoom plugin. In my scenario, I have two publishers, A and C, and a subscriber B who subscribes to A’s video stream.

My question is about handling the transport-wide-cc feedback from B. When B sends transport-wide-cc feedback to Janus, should I relay this feedback to the publisher A in my plugin? Or does the Janus server handle this feedback internally?

I understand that in most cases, the publisher (a WebRTC client) would handle congestion control, including adjusting the bitrate of its media stream. However, in my scenario, I am considering whether I need to relay the feedback to the publisher for it to adjust its bitrate accordingly.

Any guidance or advice would be greatly appreciated.

Thank you.

We don’t support TWCC on the subscribers side yet, only publisher. For publishers, this is handled by the core, so plugins are not involved.

Thank you for your response. Given that Janus currently does not handle TWCC for subscribers, I am considering alternative approaches for managing network congestion in my custom plugin.

One approach I am considering is to use the slow_link callback function to detect when the subscriber is experiencing network issues. Once detected, I am thinking of two possible ways to adjust the bitrate:

  1. Send a REMB packet to the publisher to request it to lower its bitrate.
  2. If I use an SVC (Scalable Video Coding) encoder, dynamically select a lower-quality layer for the stream.

Would these approaches be feasible in the current Janus architecture? Any advice or suggestions would be greatly appreciated.

Thank you.

Yes, using slow_link or info you get from getStats() can be used as your triggers to react somehow, until we implement bandwidth estimation on that side too.