-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Implement Transport::setMinOutgoingBitrate #1035
Conversation
@jmillan how much putada is merging this in v3 (it will cause conflicts and will require migration to flatbuffers). |
It is some putada, but I don't think we can stop development due to it. I'll resume flatbuffers work ASAP. |
Is this the real use-case? Or is this a workaround to deal with the bad bandwidth estimations of the integrated libwebrtc stuff? I don't really understand the purpose of this PR. Imagine that there are perfect network conditions and the Transport just handles a single Consumer which is sending 1000bps (which is the bitrate of the original sender) to the receiver device. Now you call `transport.setMinOutgoingBitrate(2000). What does it mean exactly? |
Yes, that's the use case we have in mind. Some clients are running in the same network as mediasoup, and we don't want the BWE to mess things up in some cases. We have yet to see those issues in production, but this new API is just a way to ensure we have the max possible video quality for those cases. In your example, if the producer sends 1000bps and you call
|
I'm afraid this is not the way to go. Basically you want to disable BWE in certain scenarios (such as when clients are in same network than mediasoup) because current BWE doesn't behave correctly (super well known old issue). The thing is:
Look, there is a huge effort here #922 to make BWE in mediasoup work properly. It comes with an updated version of libwebrtc code plus many custom changes to make it work as expected in mediasoup. There is still work to do, but results are promising. We don't want to provide an API to "mitigate current BWE flaws". People will start using such a new So we are not gonna merge this featue. This is the anti way to go. What we need is that people interested in this stuff contribute to the huge ongoing work of @sarumjanuch in #922 (try it, test it, contribute to it). We don't want to hide current flaws and we don't want that this outstanding long-term real issue gets even less attraction from mediasoup community "because there is a workaround". BTW, if you just want to disable BWE in certain cases you can do it by removing |
Removing I'm sorry I was not explicit enough. I don't want to work around or mitigate any possible issue. To clarify, I think this functionality would make sense even if the BWE has 100% accuracy. The goal is not to run a complex system (BWE) when we don't need it (dedicated local networks). I would do the same between Chromes if I needed it (using A solution using minOutgoingBitrate sounds less hacky to me than removing transport-cc/remb, but I might be wrong, and I understand that you prefer not to add a new API. |
I guess that such a value is not intended to override current estimated uplink bandwidth. Anyway it's a "x-google" flag for good reasons.
I don't agree. Clients are supposed to tell api-media what they support and what they want or what they do not want. The way to communicate it is by properly filling |
Agree, I was not saying that it is intended for overriding the BWE, but that's maybe the way to achieve the goal I described. Not sure anyway, as I haven't tested it.
Fair enough, that's the way to go, then. Thanks for taking the time to review the PR and discuss this topic! |
Implements this new API to set the minimum outgoing bitrate for WebRTC transports. It is similar to the existing
setMaxIncomingBitrate
andsetMaxOutgoingBitrate
.The main use-case would be to enforce a bitrate between client and server when the network is reliable.