Repository navigation
Conversation
…l clock The catalog estimator measured each frame's flush time against its media timestamp, so any capture clock drifting from the wall clock read as ever-rising lateness. A physical camera on moq.dev/publish ratcheted audio jitter and delay without bound, republishing the catalog and driving hundreds of SUBSCRIBE_UPDATEs a minute. jitter now covers only reorder delay and batch spans. delay is how far a frame's timestamp trails the highest one another track of the catalog already wrote, so importers measure it too. flush, moq_publish_media_flush, the binding wrappers, and moqsink's encoder pad property are removed. The camera's audio still drifts behind video by PTS; the subscribe update quest becomes the audio capture clock fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Measured on a physical camera and microphone. Neither quest hypothesis held: worklet stamps track the wall clock and encodeQueueSize stays 0. Release enables Opus DTX for voice, and Chromium stamps Opus output by counting emitted samples, so each suppressed silent frame pulls later audio 20 ms earlier. main already removed DTX (#4808, #4919); a local main build shows no drift. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Outcome: measured on a physical camera and microphone. The audio lag is Opus DTX on (Written by Claude Opus 5.5) |
kixelated
added a commit
that referenced
this pull request
Oct 24, 2026
Folds in #6599's measurement: release's DTX made Chromium's sample-counted Opus stamps fall behind, and main already removed DTX. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Closing: this PR's quest deletion and its Opus DTX measurement were folded into #6595 (credited there), which has merged. Thanks for the measurement. (Written by Claude Opus 5.5) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds on #6595 (this branch was cut from it) until that merges; only the last commit belongs to this PR.
Deletes
quest/m1/audio-capture-lag.mdand itsquest/m1/README.mdentry. No code change: the measured cause is already fixed onmain.Measurement
Physical camera and microphone (AT2020 USB), Chrome, once a second: the worklet's latest stamp minus
now(), the AudioContext clock minus the wall clock, empty and dropped quanta,encodeQueueSize, and encoder input and output counts.Local
js/publishbuild of this branch, camera (H.264 720p30) plus Opus, about 130 s: the stamp gap stayed flat (about +55 ms), no empty or dropped quanta,encodeQueueSize0, every input produced an output, and the viewer's audio catalogdelaywas 13 ms. No drift.Release
moq.dev/publish(6f204fd), same devices, withAudioWorkletNodeandAudioEncoderwrapped in the page:Neither quest hypothesis held. Input stamps track the clock, so no samples are lost, and
encodeQueueSizestays 0, so there is no backlog. Release configures voice withusedtx: true, and Chromium stamps Opus output by counting the samples it emits, so each frame DTX suppresses pulls later audio 20 ms earlier: (in - out) × 20 ms equals the gap exactly. DTX's keep-alive every 400 ms matches the 400 ms catalog steps seen earlier.mainfixed this in #4808 (DTX off for voice) and #4919 (DTX removed, with a test that it never reaches the encoder). The backport toreleaseis #6598.API and wire impact
None.
Checks
just checkandquest checkpass.Suggested follow-ups
demo/relay/localhost.tomlfails at startup on this branch withstats.interval must be non-zero([stats] enabled = true, no interval), sojust devcannot start the relay.Decisions needed
quest/m1/audio-capture-lag.mdexists only on #6595, which adds it (renamed fromaudio-capture-clock.md); it is not onmain. So this PR has no diff of its own againstmain, and merging it now would also land all of #6595.mainin and mark it ready; the diff is then just the deletion.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)