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
1 change: 1 addition & 0 deletions quest/m2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ ranked just below deterministic TS legs, which it requires.
- [Deterministic H.265 TS legs](/quest/m2/ts-hitless-h265.md) - H.265's buffering period gets the same group anchor as H.264
- [TS over RTP legs](/quest/m2/ts-rtp-egress.md) - two legs send identical RTP packets, headers included, so an ST 2022-7 receiver can merge them
- [Old tail across a restart](/quest/m2/ts-sync-restart-tail.md) - both `--sync` legs send the old timeline's tail up to a restart, so an ST 2022-7 merge has no hole there
- [Paced gap after a restart](/quest/m2/ts-restart-gap-burst.md) - a forward restart within the minute no longer sends every gap slot in one burst
- [moqsrc A/V sync](/quest/m2/moqsrc-av-sync.md) - a nightly test measures A/V skew from `moqsrc` through clock-synced sinks
- [MP4 export](/quest/m2/mp4-export.md) - `moq export mp4 --output` records crash-safe fragments, then finishes a regular MP4 with moov at the end
- [fMP4 edit lists](/quest/m2/fmp4-edit-lists.md) - the fMP4 importer applies edit lists to frame timestamps
Expand Down
24 changes: 24 additions & 0 deletions quest/m2/ts-restart-gap-burst.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# [S] Pace the gap slots after a short forward restart

## Goal

After a forward timeline restart within the minute a restarted grid runs on
across (`AHEAD` in `rs/moq-mux/src/container/ts/lane.rs`), `moq export ts`
lays every slot in the gap at once. On the new clock their due times are
already past, so a leg sends them in one burst, which can overflow a finite
UDP or sink queue. The plain stdout TS path bursts the same way, and so does
a `--sync --rtp` leg once
[moq-dev/moq#6304](https://github.com/moq-dev/moq/pull/6304) lands. The gap
slots are either paced out or not laid at all.

## Plan

- Decide between pacing the gap slots and skipping them. Skipping must keep
synced legs identical, so it must follow from something both legs read
alike.
- Test with a mocked-time restart inside the minute, asserting datagram or
packet spacing. `an_rtp_leg_sends_its_paced_tail_before_a_restart` from
that PR restarts 120 s ahead specifically to avoid this case, so it is the
natural one to extend.

Public API: none.
Loading