[pulseaudio-discuss] [PATCH 4/4] loopback: remove skip logic

Georg Chini georg at chini.tk
Sat Feb 4 21:38:20 UTC 2017


The skip logic is no longer needed as the code is now waiting for
source and sink to start up.

---
 src/modules/module-loopback.c | 41 ++++-------------------------------------
 1 file changed, 4 insertions(+), 37 deletions(-)

diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c
index 7a0574c..74f5fb7 100644
--- a/src/modules/module-loopback.c
+++ b/src/modules/module-loopback.c
@@ -78,14 +78,15 @@ struct userdata {
     pa_rtpoll_item *rtpoll_item_read, *rtpoll_item_write;
 
     pa_time_event *time_event;
-    pa_usec_t adjust_time;
+
+    size_t first_chunk_length;
 
     int64_t recv_counter;
     int64_t send_counter;
 
-    size_t skip;
-    size_t first_chunk_length;
+    /* Values from command line configuration */
     pa_usec_t latency;
+    pa_usec_t adjust_time;
 
     /* Latency boundaries and current values */
     pa_usec_t min_source_latency;
@@ -372,26 +373,11 @@ static void memblockq_adjust(struct userdata *u, pa_usec_t latency_offset_usec,
 /* Called from input thread context */
 static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) {
     struct userdata *u;
-    pa_memchunk copy;
 
     pa_source_output_assert_ref(o);
     pa_source_output_assert_io_context(o);
     pa_assert_se(u = o->userdata);
 
-    if (u->skip >= chunk->length) {
-        u->skip -= chunk->length;
-        return;
-    }
-
-    if (u->skip > 0) {
-        copy = *chunk;
-        copy.index += u->skip;
-        copy.length -= u->skip;
-        u->skip = 0;
-
-        chunk = ©
-    }
-
     if (!u->push_called_in_thread) {
         u->source_snapshot.source_timestamp = pa_rtclock_now();
         u->source_snapshot.push_source_latency = pa_source_get_latency_within_thread(u->source_output->source);
@@ -510,24 +496,6 @@ static void source_output_detach_cb(pa_source_output *o) {
     }
 }
 
-/* Called from input thread context */
-static void source_output_state_change_cb(pa_source_output *o, pa_source_output_state_t state) {
-    struct userdata *u;
-
-    pa_source_output_assert_ref(o);
-    pa_source_output_assert_io_context(o);
-    pa_assert_se(u = o->userdata);
-
-    if (PA_SOURCE_OUTPUT_IS_LINKED(state) && o->thread_info.state == PA_SOURCE_OUTPUT_INIT) {
-
-        u->skip = pa_usec_to_bytes(PA_CLIP_SUB(pa_source_get_latency_within_thread(o->source),
-                                               u->latency),
-                                   &o->sample_spec);
-
-        pa_log_info("Skipping %lu bytes", (unsigned long) u->skip);
-    }
-}
-
 /* Called from main thread */
 static void source_output_kill_cb(pa_source_output *o) {
     struct userdata *u;
@@ -1189,7 +1157,6 @@ int pa__init(pa_module *m) {
     u->source_output->kill = source_output_kill_cb;
     u->source_output->attach = source_output_attach_cb;
     u->source_output->detach = source_output_detach_cb;
-    u->source_output->state_change = source_output_state_change_cb;
     u->source_output->may_move_to = source_output_may_move_to_cb;
     u->source_output->moving = source_output_moving_cb;
     u->source_output->suspend = source_output_suspend_cb;
-- 
2.10.1



More information about the pulseaudio-discuss mailing list