On Mon, 2017-03-13 at 16:07 +0530, Arun Raghavan wrote: > The webrtc canceller requires that the set_stream_drift_samples() method > be called before every call of ProcessStream(). We do kind of leak this > into the generic bits of module-echo-cancel, but this should not be > harmful in the general case either. > > Relatedly, we also require that this happen when there are no sink > samples being sent, so we just drop the special-case check for whether > the sink is running to do the drift compensation calculations. It's not clear to me from the commit message which assertion fails. Did the crash happen because set_drift() wasn't called before ProcessStream(), because we didn't call do_push_drift_comp() when the sink isn't running? If so, why did you move the set_drift() call? Was that a fix for some other bug? > @@ -947,7 +945,7 @@ static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) > } > > /* process and push out samples, do drift compensation only if the sink is actually running */ > - if (u->ec->params.drift_compensation && u->sink->thread_info.state == PA_SINK_RUNNING) > + if (u->ec->params.drift_compensation) > do_push_drift_comp(u); > else > do_push(u); It looks like the comment should be updated too. -- Tanu https://www.patreon.com/tanuk