From fa962aa9d170da1fafbff5d45867a7b962c01096 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Tue, 4 Nov 2025 00:26:25 +0100 Subject: [PATCH] Fixed format conversion in crossfade discard calculation --- music_assistant/controllers/streams.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/music_assistant/controllers/streams.py b/music_assistant/controllers/streams.py index 9684608c..0eb89d40 100644 --- a/music_assistant/controllers/streams.py +++ b/music_assistant/controllers/streams.py @@ -1435,11 +1435,18 @@ class StreamsController(CoreController): fade_out_data: bytes | None = None if crossfade_data: - discard_seconds = ( - int(crossfade_data.fade_in_size / crossfade_data.pcm_format.pcm_sample_size) - 1 + # Calculate discard amount in seconds (format-independent) + fade_in_duration_seconds = ( + crossfade_data.fade_in_size / crossfade_data.pcm_format.pcm_sample_size ) + discard_seconds = int(fade_in_duration_seconds) - 1 + # Calculate discard amounts in CURRENT track's format discard_bytes = int(discard_seconds * pcm_format.pcm_sample_size) - discard_leftover = int(crossfade_data.fade_in_size - discard_bytes) + # Convert fade_in_size to current track's format for correct leftover calculation + fade_in_size_in_current_format = int( + fade_in_duration_seconds * pcm_format.pcm_sample_size + ) + discard_leftover = fade_in_size_in_current_format - discard_bytes else: discard_seconds = streamdetails.seek_position discard_leftover = 0 -- 2.34.1