pa_memchunk *chunk) {
struct userdata *u = PA_ECHO_CANCEL(o)->u;
+ pa_source_output *so = NULL;
/* trigger resolves a race condition related to post_process between source and render thread */
if (u->triggered) {
if (code == PA_ECHO_CANCEL_MESSAGE_PUSH_ECHO) {
- pa_source_output *o = NULL;
pa_usec_t latency;
- o = find_source_output_by_flags(u->source);
- if (!o) {
+ so = find_source_output_by_flags(u->source);
+ if (!so) {
u->triggered = false;
return 0;
}
- o->post_process = post_process;
+ so->post_process = post_process;
latency = get_round_trip_latency(u);
- if (pa_processor_setup_reference_memblockq_padding(o->thread_info.processor, latency) < 0)
+ if (pa_processor_setup_reference_memblockq_padding(so->thread_info.processor, latency) < 0)
pa_log_warn("Failed to setup reference memblockq padding");
u->triggered = false;
- pa_log_info("Triggered Echo-Cancellation. index(%d), latency(%" PRIu64 ") usec", o->index, latency);
+ pa_log_info("Triggered Echo-Cancellation. index(%d), latency(%" PRIu64 ") usec", so->index, latency);
}
}
break;
case PA_ECHO_CANCEL_MESSAGE_PUSH_ECHO:
if (u->enable_in_thread) {
- pa_source_output *o = NULL;
-
pa_assert(u->source);
- o = find_source_output_by_flags(u->source);
- if (!o)
+ so = find_source_output_by_flags(u->source);
+ if (!so)
break;
- if (pa_processor_push_reference(o->thread_info.processor, chunk) < 0)
+ if (pa_processor_push_reference(so->thread_info.processor, chunk) < 0)
pa_log_error("Failed to push reference data");
}
case PA_ECHO_CANCEL_MESSAGE_SET_AEC_STATE: {
void **v = (void **)data;
bool enable = (bool)v[0];
- pa_source_output *o = (pa_source_output *)v[1];
+ so = (pa_source_output *)v[1];
u->enable_in_thread = enable;
if (enable) {
u->triggered = true;
} else {
- pa_processor_flush(o->thread_info.processor);
- o->post_process = NULL;
+ pa_processor_flush(so->thread_info.processor);
+ so->post_process = NULL;
}
break;