]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Add 100 ms to the amount to flush after a large positive sync error to give the syste...
authorMike Brady <4265913+mikebrady@users.noreply.github.com>
Thu, 3 Jun 2021 08:21:14 +0000 (09:21 +0100)
committerMike Brady <4265913+mikebrady@users.noreply.github.com>
Thu, 3 Jun 2021 08:21:14 +0000 (09:21 +0100)
player.c

index f16c50216e957765b62547584ffaa16c72ed3ee3..4c13b2ef85cf90ae5116a38fd5523444f86dbb34 100644 (file)
--- a/player.c
+++ b/player.c
@@ -2406,8 +2406,13 @@ void *player_thread_func(void *arg) {
                       sync_error, (sync_error * 1.0) / config.output_rate,
                       inframe->given_timestamp);
                 int64_t local_frames_to_drop = sync_error / conn->output_sample_ratio;
+
+                // add 100 ms to give the pipeline a chance to recover -- a bit hacky
+                local_frames_to_drop += (conn->input_rate) * 100 / 1000;
+
                 uint32_t frames_to_drop_sized = local_frames_to_drop;
                 do_flush(inframe->given_timestamp + frames_to_drop_sized, conn);
+
               } else if ((sync_error < 0) && ((-sync_error) > filler_length)) {
                 debug(1,
                       "Large negative sync error of: %" PRId64