auhal: do not add long latency to time_get callback
authorDavid Fuhrmann <dfuhrmann@videolan.org>
Wed, 23 Sep 2015 19:49:40 +0000 (21:49 +0200)
committerDavid Fuhrmann <dfuhrmann@videolan.org>
Wed, 23 Sep 2015 19:55:31 +0000 (21:55 +0200)
Currently, the VLC code cannot cope with big audio device
latencies as reported by airplay devices. Thus disable the
latency calculation for those devices for now.

refs #14042

modules/audio_output/auhal.c

index 5dc14f5..8b60ac0 100644 (file)
@@ -441,8 +441,14 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt)
         msg_Warn(p_aout, "Cannot get device latency [%4.4s]",
                  (char *)&err);
     }
-    msg_Dbg(p_aout, "Current device has a latency of %u frames", p_sys->i_device_latency);
+    float f_latency_in_sec = (float)p_sys->i_device_latency / (float)fmt->i_rate;
+    msg_Dbg(p_aout, "Current device has a latency of %u frames (%f sec)", p_sys->i_device_latency, f_latency_in_sec);
 
+    // Ignore long Airplay latency as this is not correctly working yet
+    if (f_latency_in_sec > 0.5f) {
+        msg_Info(p_aout, "Ignore high latency as it causes problems currently.");
+        p_sys->i_device_latency = 0;
+    }
 
     bool b_success = false;