-
Notifications
You must be signed in to change notification settings - Fork 62
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
Increase should never decrease #221
base: master
Are you sure you want to change the base?
Conversation
When the controller decides to increase the rate, it should not decrease, even if the measured transmission rate was low. The rate could be lower because there was not enough data to send.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #221 +/- ##
==========================================
- Coverage 79.73% 79.64% -0.09%
==========================================
Files 68 68
Lines 3587 3587
==========================================
- Hits 2860 2857 -3
- Misses 602 604 +2
- Partials 125 126 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Draft because we might want to add a test case. And I don't know what's wrong with that failing test... |
I've checked and sometimes this branch: |
We have a problem with a.variance calculation in *func (a exponentialMovingAverage) update(value float64)
but variance should be another problem that we never reset latestDecreaseRate and potentially could always fall into
condition. But standard clearly stats that we MUST reset latestDecreaseRate and go back to "multiplicative increase state".
Now if we ever reach "func (c rateController) decrease() int" function So we must reset c.latestDecreaseRate to not set target bitrate to 1.5 * c.latestReceivedRate in "increase" state if our current c.latestReceivedRate fall in clamps of latestDecreaseRate calculated on last overuse state. |
last commit to interceptor main has these tests "Test / test-i386 (1.21) / Go i386 1.21 (push) Failing after 43s" failed as well. |
I've submitted new request #226 containing this fix |
We're currently using a forked version of Pion with this change. As we reworked our video streaming code, we needed this change to make bandwidth estimation work smoothly (@danielslee can provide more details if necessary). Just wondering if there is a path to getting this merged? I see that 226 got closed but we didn't need the other changes in 226 - just this one. Thanks! 🙏 |
When the controller decides to increase the rate, it should not decrease, even if the measured transmission rate was low. The rate could be lower because there was not enough data to send.