Confirmed users
325
edits
No edit summary |
No edit summary |
||
| Line 17: | Line 17: | ||
*** 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|884365}}, though if the underflow is serious enough we may need to simply drop audio. | *** 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|884365}}, 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 {{bug|884365}} 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 | ** 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}} | ||
** Investigate any remaining latency issues | ** Investigate any remaining latency issues | ||