diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2010-08-24 13:29:18 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2010-09-02 17:31:36 +0200 |
commit | 1983337f0ea7008903b2a1327d4d9ce9f7b69392 (patch) | |
tree | 7f632801a53c25394b49b09062236e2b30beff94 /src | |
parent | c3cc461bf5b2f65f257c4017226c6693c1570885 (diff) |
echo-cancel: improve debug
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/module-echo-cancel.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c index 0abee55c..4d44bf73 100644 --- a/src/modules/module-echo-cancel.c +++ b/src/modules/module-echo-cancel.c @@ -267,17 +267,15 @@ static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct tim base_rate = u->source_output->sample_spec.rate; if (diff_time < 0) { - pa_log_info("Playback after capture (%lld), realign", (long long) diff_time); - pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->source_output), SOURCE_OUTPUT_MESSAGE_APPLY_DIFF_TIME, - NULL, diff_time, NULL, NULL); /* recording before playback, we need to adjust quickly. The echo * canceler does not work in this case. */ + pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->source_output), SOURCE_OUTPUT_MESSAGE_APPLY_DIFF_TIME, + NULL, diff_time, NULL, NULL); //new_rate = base_rate - ((pa_usec_to_bytes (-diff_time, &u->source_output->sample_spec) / fs) * PA_USEC_PER_SEC) / u->adjust_time; new_rate = base_rate; } else { if (diff_time > 4000) { - pa_log_info("playback too far ahead (%lld), realign", (long long) diff_time); /* diff too big, quickly adjust */ pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->source_output), SOURCE_OUTPUT_MESSAGE_APPLY_DIFF_TIME, NULL, diff_time, NULL, NULL); @@ -575,17 +573,21 @@ static void apply_diff_time(struct userdata *u, int64_t diff_time) { if (diff_time < 0) { diff = pa_usec_to_bytes (-diff_time, &u->source_output->sample_spec); - pa_log_debug("drop sink (%lld)", (long long) diff); + if (diff > 0) { + pa_log_info("Playback after capture (%lld), drop sink %lld", (long long) diff_time, (long long) diff); - /* go forwards on the read side */ - pa_memblockq_drop(u->sink_memblockq, diff); - } else { + /* go forwards on the read side */ + pa_memblockq_drop(u->sink_memblockq, diff); + } + } else if (diff_time > 0) { diff = pa_usec_to_bytes (diff_time, &u->source_output->sample_spec); - pa_log_debug("drop source (%lld)", (long long) diff); + if (diff > 0) { + pa_log_info("playback too far ahead (%lld), drop source %lld", (long long) diff_time, (long long) diff); - /* go back on the read side */ - pa_memblockq_rewind(u->sink_memblockq, diff); + /* go back on the read side */ + pa_memblockq_rewind(u->sink_memblockq, diff); + } } } |