nextcloud / nextcloud/spreed

Adjust simulcast bitrates based on the bandwidth limits set in the HPB

Open
#5,922 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug feature: call 📹 feature: frontend 🖌️
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.