Skip to content
Merged
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,14 +148,15 @@ 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 |
| --- | --- |
| `near-zero` | The control. The shaper is in the path but treats nothing. |
| `mild` | A healthy wired LAN: 5ms delay, 5ms sigma, in order. |
| `bursty` | A paced hop: seven datagrams per 160ms window, released together. |
| `step` | 5ms for thirty seconds, then 60ms, with no recovery. |
| `congestion` | A 1 Mbit/s downlink behind a 1s queue that collapses to 16 kbit/s from 25s to 26.5s. |
| `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. |
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 @@ -11,6 +11,7 @@ const BUILTIN: &[(&str, &str)] = &[
("mild", include_str!("../profiles/mild.toml")),
("bursty", include_str!("../profiles/bursty.toml")),
("step", include_str!("../profiles/step.toml")),
("congestion", include_str!("../profiles/congestion.toml")),
("cellular-step", include_str!("../profiles/cellular-step.toml")),
("cellular-bursty", include_str!("../profiles/cellular-bursty.toml")),
("cellular-deep", include_str!("../profiles/cellular-deep.toml")),
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), built into moq-shaper) 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