Adjust simulcast bitrates based on the bandwidth limits set in the HPB
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 2.2k
- Forks
- 587
- Avg merge
- 18h 27m
- Merged PRs (30d)
- 333
Description
Extracted from #5535
When SDP munging is used the bitrates of the simulcast streams are directly set by the browser. However, when using the RID parameter the app defines the maximum bitrates for each stream. Right now the bitrates are hardcoded, but it would be good to set them based on the maximum bandwidth allowed by the HPB (but note that bandwidth configurations on the HPB side might not be that easy if proxies are used which could have their own bandwidth limits).
Currently the RID parameter is used only for Firefox, but recent Chromium versions support it too. Therefore, if the bitrate adjustment is introduced it would be good to use the RID parameter for Chromium too.
Besides that currently sometimes the following message appears in Janus logs: No packet received on substream 2 for a while, falling back to 1. This could be related not only to the bandwidth limits from the HPB, but also to how the bandwidth is allocated between the different streams (it seems that there are issues in that regard). So further changes might be needed besides just adjusting the bitrate based on the HPB bandwidth.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the hardcoded simulcast bitrate code linked from the issue and server.conf.in's HPB bandwidth setting. Compare the Firefox and Chromium RID paths and reproduce the Janus substream fallback message; done requires an agreed approach that accounts for HPB limits, proxy limits, and stream allocation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- audio-video-rtc
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100