]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Preflight all audio material playing (not lead-in silences though...)
authorMike Brady <mikebrady@eircom.net>
Tue, 8 Jan 2019 13:01:22 +0000 (13:01 +0000)
committerMike Brady <mikebrady@eircom.net>
Tue, 8 Jan 2019 13:01:22 +0000 (13:01 +0000)
player.c

index 3bab2428a3114bfc57b9d8416ae62be303072645..724b5cab2dde9586c3b861b85df6019f3a437ea9 100644 (file)
--- a/player.c
+++ b/player.c
@@ -1418,6 +1418,9 @@ void player_thread_cleanup_handler(void *arg) {
   debug(3, "Connection %d: player thread main loop exit via player_thread_cleanup_handler.",
         conn->connection_number);
 
+  if (config.output->stop)
+    config.output->stop();
+
   if (config.statistics_requested) {
     int rawSeconds = (int)difftime(time(NULL), conn->playstart);
     int elapsedHours = rawSeconds / 3600;
@@ -1470,8 +1473,6 @@ void player_thread_cleanup_handler(void *arg) {
   }
   free_audio_buffers(conn);
   terminate_decoders(conn);
-  if (config.output->stop)
-    config.output->stop();
 
   clear_reference_timestamp(conn);
   conn->rtp_running = 0;
@@ -2219,7 +2220,10 @@ void *player_thread_func(void *arg) {
                 }
               }
 
-              if ((current_delay < conn->dac_buffer_queue_minimum_length) ||
+                                                if (config.output->preflight)
+                                                       config.output->preflight(conn->outbuf,play_samples);
+
+             if ((current_delay < conn->dac_buffer_queue_minimum_length) ||
                   (config.packet_stuffing == ST_basic)) {
                 play_samples =
                     stuff_buffer_basic_32((int32_t *)conn->tbuf, inbuflength, config.output_format,