-
Notifications
You must be signed in to change notification settings - Fork 3
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
wcc with trendline filter / delay-base controller #7284
base: dev
Are you sure you want to change the base?
Conversation
UPDATE Oct 20ththe 2nd version for test is f078a54. Main changes:
|
UPDATE Oct 21th: In the last two versions, wcc_v2 need to be enabled with This has caused confusion in testing. Now I released the third version 8c5bb7f. In this version, wcc_v2 is enabled by default. No parameter passing is needed. In addtion you can confirm WCC_V2 is running from the log, which prints roughly every 5seconds: If you want to run the old wcc and get plots for old wcc, use |
Protocol End-to-End Streaming Test ResultsExperiments SummaryExpand Summary❌ Experiment 1 - unknown. Download logs: aws s3 cp s3://whist-e2e-protocol-test-logs/yancey/gcc/2022_10_23@10-17-09/ 2022_10_23@10-17-09/ --recursive ❌ Experiment 2 - unknown. Logs not available. Full Results: link here |
backgroud
See gist: https://gist.github.com/wangyu-/e6208baf47945d56595872d9af5c6542
Description
New version of WCC with delay-based controller from GCC correctly implemented,
Addresses issues of #7380
Implementation
Documentation & Tests Added
Testing Instructions
the version avaliable for test is cf244a2, which has been rebased to the lasted dev.
If you run with
--wcc_v2 --always-saturate
on client side, then wcc_v2 is running. (at the moment, bandwitdh saving logic for wcc_v2 is not implement, always-saturate is needed)If you run with no additional parameter, then the original wcc is running.
you can also run with
--always-saturate
, then it's original wcc with bandwith saving logic off. So that you can compare wcc and wcc_v2 without the affected of decoder undershooting.No matter wcc or wcc_v2, the plot data will be automatically generated at
/tmp/plot.json
, if you encounter anything weird, sent the plot file to me.wcc and wcc_v2 can share the same server, you don't need to switch between wcc and wcc_v2 on server side. (but make sure your server is also on cf244a2)
What to expected
On a very good link (with very large bandwith, no competing traffic)
there shouldn't be much different with the old wcc, since for such a good link congestion control is not really taking into account.
On a constrained link (either the link's bandwith is small, or there are competing traffic, or the channel itself is noisy)
less freeze time on first connection. i.e. you might encountered a lot, after you start whist client, the video got freezed for a few seconds. This will get reduced. (in future the "prober" idea from webrtc can hopefully solve this completely. )
less latency spikes. which in further means, less audio pops, less video freezes (tiny or big), less response time for click or play online game. If the difference is too subtle to tell, you can see the difference from
short_term_latency
from the plot.less weird loss of connection.
drawback:
Testing suggestions
Since I have tested on simulated environments like a thousand times, there shouldn't be big problems. The real world networks are the parts my test can't could cover.
the clearness/sharpenss on real world network is what I am worrying most. In term of latency, wcc_v2 should be almost always better (or not worse). The worry is, to achieve better latency, if video quailty is compromised (too much).
Since on static content, for original wcc (with
--always-saturate
off), the encoder is in serious undershoot most of the time, the congestion control is not taking too much account.Others
If you want to test on simulated links, here is some scripts I use for simulated links.
PR Checklist**