fix streamed seconds calculation
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 26 Mar 2024 10:45:54 +0000 (11:45 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 26 Mar 2024 10:45:54 +0000 (11:45 +0100)
music_assistant/server/controllers/streams.py

index 70762a12449718a4c223ad83ccdeefba8411ea9b..09ffa2774be07f12000015aff0fcdd766605e127 100644 (file)
@@ -903,22 +903,25 @@ class StreamsController(CoreController):
 
             # update duration details based on the actual pcm data we sent
             # this also accounts for crossfade and silence stripping
-            seconds_streamed = (bytes_written + len(last_fadeout_part)) / pcm_sample_size
+            seconds_streamed = bytes_written / pcm_sample_size
             queue_track.streamdetails.seconds_streamed = seconds_streamed
             queue_track.streamdetails.duration = (
                 queue_track.streamdetails.seek_position + seconds_streamed
             )
             self.logger.debug(
-                "Finished Streaming queue track: %s (%s) on queue %s - seconds streamed: %s",
+                "Finished Streaming queue track: %s (%s) on queue %s",
                 queue_track.streamdetails.uri,
                 queue_track.name,
                 queue.display_name,
-                seconds_streamed,
             )
-
+        #### HANDLE END OF QUEUE FLOW STREAM
         # end of queue flow: make sure we yield the last_fadeout_part
         if last_fadeout_part:
             yield last_fadeout_part
+            # correct seconds streamed/duration
+            last_part_seconds = len(last_fadeout_part) / pcm_sample_size
+            queue_track.streamdetails.seconds_streamed += last_part_seconds
+            queue_track.streamdetails.duration += last_part_seconds
             del last_fadeout_part
 
         self.logger.info("Finished Queue Flow stream for Queue %s", queue.display_name)