]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Simplify some calculations and a bug so that the output calculation is correclty...
authorMike Brady <mikebrady@eircom.net>
Wed, 15 Aug 2018 14:57:41 +0000 (15:57 +0100)
committerMike Brady <mikebrady@eircom.net>
Wed, 15 Aug 2018 14:57:41 +0000 (15:57 +0100)
audio_alsa.c

index 0cfe4a72afd039fec4b6d17dbad124df0fff3be7..ea6ab91f3f1d20e9b563cab41c39e08ae13bd71d 100644 (file)
@@ -882,6 +882,8 @@ int delay(long *the_delay) {
         debug(1, "Error %d in delay(): \"%s\". Delay reported is %d frames.", reply,
               snd_strerror(reply), *the_delay);
         snd_pcm_recover(alsa_handle, reply, 1);
+        frame_index = 0;
+        measurement_data_is_valid = 0;
       }
     } else {
       frame_index = 0; // we'll be starting over...
@@ -980,20 +982,17 @@ static int play(void *buf, int samples) {
           long fl = 0;
           err2 = snd_pcm_delay(alsa_handle, &fl);
           if (err2 != 0) {
-            frame_index = 0;
-            measurement_data_is_valid = 0;
             debug(1, "Error %d in delay(): \"%s\". Delay reported is %d frames.", err2,
                   snd_strerror(err2), fl);
             snd_pcm_recover(alsa_handle, err2, 1);
+            frame_index = 0;
+            measurement_data_is_valid = 0;
           }
-          uint64_t tf = get_absolute_time_in_fp();
+          measurement_time = get_absolute_time_in_fp();
           frames_played_at_measurement_time = frames_sent_for_playing - fl;
           if (frame_index == start_measurement_from_this_frame) {
             frames_played_at_measurement_start_time = frames_played_at_measurement_time;
-            measurement_start_time = tf;
-          } else {
-            frames_played_at_measurement_time = frames_played_at_measurement_time;
-            measurement_time = tf;
+            measurement_start_time = measurement_time;
             measurement_data_is_valid = 1;
           }
         }