The tunnel modules are not suspending the smoother for latency calculation at the appropriate times, causing it to accumulate bad data and eventually royally screwing up the calculations. I'll hopefully have a patch in a bit.
Very silly bug. The worker threads in module-tunnel looked at the wrong state variable. Fix: Index: src/modules/module-tunnel.c =================================================================== --- src/modules/module-tunnel.c (revision 27672) +++ src/modules/module-tunnel.c (revision 27674) @@ -502,9 +502,9 @@ /* First, change the state, because otherwise pa_sink_render() would fail */ if ((r = pa_sink_process_msg(o, code, data, offset, chunk)) >= 0) { - stream_cork_within_thread(u, u->sink->state == PA_SINK_SUSPENDED); + stream_cork_within_thread(u, u->sink->thread_info.state == PA_SINK_SUSPENDED); - if (PA_SINK_IS_OPENED(u->sink->state)) + if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) send_data(u); } @@ -613,7 +613,7 @@ int r; if ((r = pa_source_process_msg(o, code, data, offset, chunk)) >= 0) - stream_cork_within_thread(u, u->source->state == PA_SOURCE_SUSPENDED); + stream_cork_within_thread(u, u->source->thread_info.state == PA_SOURCE_SUSPENDED); return r; }
Thanks, applied: http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=705d3c28f215bd6899e0e5c3a5ed9a69418afd86
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.