Improve sync stability by adapting to diff trend shifts (#2189)
authorPiotr Mamak <pmamak@gmail.com>
Fri, 16 May 2025 09:00:25 +0000 (11:00 +0200)
committerGitHub <noreply@github.com>
Fri, 16 May 2025 09:00:25 +0000 (11:00 +0200)
music_assistant/providers/squeezelite/__init__.py

index c315929d3d1e17034f572a97c661c6525de388e3..e80537c51029db3effa22fde6060f717fe5d1d51 100644 (file)
@@ -759,16 +759,16 @@ class SlimprotoProvider(PlayerProvider):
             - self._get_corrected_elapsed_milliseconds(slimplayer)
         )
 
+        sync_playpoints.append(SyncPlayPoint(now, sync_master.player_id, diff))
+
         # ignore unexpected spikes
         if (
             sync_playpoints
-            and abs(statistics.fmean(x.diff for x in sync_playpoints)) > DEVIATION_JUMP_IGNORE
+            and abs(statistics.fmean(abs(x.diff) for x in sync_playpoints) - abs(diff))
+            > DEVIATION_JUMP_IGNORE
         ):
             return
 
-        # we can now append the current playpoint to our list
-        sync_playpoints.append(SyncPlayPoint(now, sync_master.player_id, diff))
-
         min_req_playpoints = 2 if sync_master.elapsed_seconds < 2 else MIN_REQ_PLAYPOINTS
         if len(sync_playpoints) < min_req_playpoints:
             return