Rate adaptation seemingly unstable
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 30/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- shell
- Domain
- networking
Research direction
Start by reviewing README.md and reproducing the constrained-link setup with the provided GStreamer pipeline, netem settings, and scream_bw_test_tx/rx applications. Compare the target encoder bitrate and actual transmission behavior across these cases. Done means establishing whether the rate swings are expected and documenting a concrete diagnosis or next action for the pipeline or adaptation logic.
Written by the indexing model from the issue text.
Description
Hello,
I've been working with SCReAM a bit more lately, and I've encountered an issue where when using the GStreamer elements over a constrained network link, the rate adaptation seems unstable. I'm trying to simulate what happens when during a stream, the network capacity drops below the value configured as the maximum bit rate for the SCReAM sender. The sender is configured with a maximum bit rate of 10Mbit/s, using the settings -initrate 2500 -minrate 500 -maxrate 10000 -nosummary. The full GStreamer sending pipeline is below:
export SENDPIPELINE="videotestsrc is-live=true pattern=\"smpte\" horizontal-speed=10 ! video/x-raw,format=I420,width=1920,height=1080,framerate=25/1 ! x264enc name=video threads=4 speed-preset=ultrafast tune=fastdecode+zerolatency ! queue ! rtph264pay ssrc=1 ! queue max-size-buffers=2 max-size-bytes=0 max-size-time=0 ! screamtx name=screamtx params=\" -initrate 2500 -minrate 500 -maxrate 10000 -nosummary\" ! udpsink host=10.0.0.168 port=5000 sync=true rtpbin name=r udpsrc port=6001 address=10.0.0.194 ! queue ! screamtx.rtcp_sink screamtx.rtcp_src ! r.recv_rtcp_sink_0 "
I'm using the netem tool to constrain the bandwidth of the link to include 40ms of latency at each end (i.e. 80ms RTT), and limiting the sending rate of both machines to 8Mbit/s:
sudo tc qdisc add dev enp0s31f6 root netem delay 40ms rate 8Mbit limit 40
This is a graph of the actual transmission rate (green) and the target encoder bit rate (blue) looks like with the network restriction applied for a full five minutes:

I think it's safe to say that the target bit rate selected is quite erratic, and it doesn't seem to match up with the graphs shown in README.md, where the line does seem to wobble a bit but it stays tightly bound around one point. I've also run the scream_bw_test_tx/rx application and I get results like this, which show a still unstable target encoder bitrate but it's a lot more closely grouped.

Using iperf3 in UDP mode, I see that the actual performance of the network is fairly stable, sending 10Mbit/s of traffic results in a pretty uniform 7.77Mbit/s of actual throughput.
I suppose my real question is - is this expected behaviour? The huge swings in target bit rate cause a lot of decoding artifacts in the video stream, and I see a lot of packet loss as it keeps bouncing off the limit. If this is not expected behaviour, can you tell me how best to optimise my sending pipeline to suit?
- Dominant language
- Shell
- Stars
- 223
- Forks
- 69
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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.
More from EricssonResearch/scream
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
EricssonResearch/scream#69 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 48/100
EricssonResearch/scream#63 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
EricssonResearch/scream#55 · 3 comments ·
-
build on WindowsOpen
Difficulty 4/5 3-5 days Newbie friendliness 25/100
EricssonResearch/scream#50 · 13 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
EricssonResearch/scream#48 ·
All issues in EricssonResearch/scream
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
richardcase/skills#29 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
openziti/helm-charts#427 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
question
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
blocked
Difficulty 1/5 Under an hour Newbie friendliness 73/100
fullsend-ai/agents#1908 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day