Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion rs/moq-shaper/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ delay = "5ms"
```

`--profile` takes a file's path, or one of the built-ins in `profiles/`, embedded in the binary. The
audio-quality lane (`test/audio-quality/`) uses `bursty` and `step`, plus its own flag profiles.
audio-quality lane (`test/audio-quality/`) uses `bursty`, `step`, and `congestion`, plus its own flag profiles.

| Name | What it models |
| --- | --- |
Expand All @@ -159,6 +159,7 @@ audio-quality lane (`test/audio-quality/`) uses `bursty` and `step`, plus its ow
| `cellular-step` | A 2 Mbit/s uplink behind a 500ms queue that drops to 500 kbit/s at 10s and recovers at 20s. |
| `cellular-bursty` | A 2 Mbit/s uplink released in scheduler grants of five datagrams or 20ms, at 1 Mbit/s from 10s to 20s. |
| `cellular-deep` | A 1 Mbit/s uplink behind a 2s queue that drops to 300 kbit/s at 10s and recovers at 20s. |
| `congestion` | A 1 Mbit/s downlink behind a 1s queue that collapses to 16 kbit/s at 25s and recovers at 26.5s. |

Each built-in is a shared path, as a browser page's sessions on one host would be. The `cellular-*` ones
shape only the uplink and keep a plain delay on the way back, so the acknowledgments are not impaired.
Expand Down
1 change: 1 addition & 0 deletions rs/moq-shaper/src/preset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const BUILTIN: &[(&str, &str)] = &[
("cellular-step", include_str!("../profiles/cellular-step.toml")),
("cellular-bursty", include_str!("../profiles/cellular-bursty.toml")),
("cellular-deep", include_str!("../profiles/cellular-deep.toml")),
("congestion", include_str!("../profiles/congestion.toml")),
];

/// A named, seeded treatment of both directions, loaded from a TOML profile.
Expand Down
3 changes: 1 addition & 2 deletions test/audio-quality/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ response would make a failure hard to attribute. The `mild` and `wide` profiles
shaper startup, before the page connects; the driver gives up on a row with no audio 20 s in, so the
measured window starts before the step, and `--duration` must exceed 30 s so playback spans it.

`congestion` ([`congestion.toml`](congestion.toml)) is a queue that fills until it drops, as a
`congestion` ([`congestion.toml`](../../rs/moq-shaper/profiles/congestion.toml)) is a queue that fills until it drops, as a
congested link's does, rather than random loss. The tone needs about 140 kbit/s, so for a second and
a half the queue holds its full second of wait and drops the rest, longer than any row's target.
When the rate returns, the transport delivers the backlog, the queue's and every retransmit. The
Expand Down Expand Up @@ -388,7 +388,6 @@ run.sh builds, starts the relay and publishers, runs each row be
../lib/pulse.py the native rows' private PulseAudio null sink
record.sh records traces/, by hand
relay.toml anonymous relay, self-signed cert
congestion.toml the congestion profile's shaper treatment
budgets.json a ceiling per metric per row
traces/ recorded arrivals, one replay profile each
clients/js/
Expand Down
3 changes: 1 addition & 2 deletions test/audio-quality/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,7 @@ shaper_of() {
near-zero | fixed-250) ;;
mild) echo "--delay 5ms --jitter 5ms --jitter-model gaussian --shared" ;;
wide) echo "--delay 40ms --jitter 40ms --jitter-model gaussian --shared" ;;
bursty | step) echo "--profile $1" ;;
congestion) echo "--profile $AQ_DIR/congestion.toml" ;;
bursty | step | congestion) echo "--profile $1" ;;
esac
}

Expand Down
Loading