Confirmed users
325
edits
| Line 19: | Line 19: | ||
=== Increases in delay and loss of sync -- {{bug|879213}} === | === Increases in delay and loss of sync -- {{bug|879213}} === | ||
* Clock-domain mismatches need a resampler to avoid possible latency buildup -- <strike>{{bug|884365}}</strike> | * Clock-domain mismatches need a resampler to avoid possible latency buildup -- <strike>{{bug|884365}}</strike> | ||
* Underflows in MSG cause MSG to "slip" the stream, such that later data is permanently delayed. {{bug|901831}}, {{bug|901539}}. A resampler can treat just slips as clock jitter -- {{bug| | * Underflows in MSG cause MSG to "slip" the stream, such that later data is permanently delayed. {{bug|901831}}, {{bug|901539}}. A resampler can treat just slips as clock jitter -- {{bug|908834}}, though if the underflow is serious enough we may need to simply drop audio. | ||
* Reducing load on MSG in callbacks (NotifyPush(), NotifyQueuedTrackChanges()) will reduce the odds of MSG underflowing. See {{bug|884365}} for reduction in the largest CPU consumer (Opus Encode + AEC). Also see {{bug|901831}} for an odd windows-only two-browser interaction. | * Reducing load on MSG in callbacks (NotifyPush(), NotifyQueuedTrackChanges()) will reduce the odds of MSG underflowing. See <strike>{{bug|884365}}</strike> for reduction in the largest CPU consumer (Opus Encode + AEC). Also see {{bug|901831}} for an odd windows-only two-browser interaction. | ||
=== MediaStreamGraph fundamental latency and backend output latency (see [[Gecko:MediaStreamLatency]]) === | === MediaStreamGraph fundamental latency and backend output latency (see [[Gecko:MediaStreamLatency]]) === | ||
* Because MediaStreamGraph reclocks and plays out from the MSG, it has to keep a minimal buffering level to avoid underflow. This adds 15-30ish ms of input-side latency (and output latency, though output clocking MSG will reduce that). Note that correcting this may require different audio streams for internal versus PeerConnection/"realtime" streams. See patch on {{bug|884365}} | * Because MediaStreamGraph reclocks and plays out from the MSG, it has to keep a minimal buffering level to avoid underflow. This adds 15-30ish ms of input-side latency (and output latency, though output clocking MSG will reduce that). Note that correcting this may require different audio streams for internal versus PeerConnection/"realtime" streams. See patch on {{bug|884365}} | ||