jack: fix build against jack 0.120.2
authorPhilippe Normand <pnormand@igalia.com>
Fri, 11 Mar 2011 09:29:08 +0000 (10:29 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 11 Mar 2011 09:48:36 +0000 (09:48 +0000)
jack_port_get_total_latency() has been deprecated in favor of
jack_port_get_latency_range().

https://bugzilla.gnome.org/show_bug.cgi?id=644477

configure.ac
ext/jack/gstjackaudiosink.c
ext/jack/gstjackaudiosrc.c

index 422ee164310a27aaf246801594201a84f04a75f9..bd6cbb062584db89de4920988559e9fdb471fd43 100644 (file)
@@ -766,6 +766,12 @@ AG_GST_CHECK_FEATURE(JACK, Jack, jack, [
   PKG_CHECK_MODULES(JACK, jack >= 0.99.10, HAVE_JACK="yes", HAVE_JACK="no")
   AC_SUBST(JACK_CFLAGS)
   AC_SUBST(JACK_LIBS)
+
+  AG_GST_PKG_CHECK_MODULES(JACK_0_120_2, jack >= 0.120.2)
+  if test x$HAVE_JACK_0_120_2 = xyes; then
+    AC_DEFINE(HAVE_JACK_0_120_2, 1, [defined if jack >= 0.120.2 is available])
+  fi
+
 ])
 
 dnl *** jpeg ***
index 4620bce71295d5cc7a8d971b6a8e40b432d1c82f..0abcfe79fd3aa0d6486366914a04ea30912b1d7d 100644 (file)
@@ -592,16 +592,27 @@ static guint
 gst_jack_ring_buffer_delay (GstRingBuffer * buf)
 {
   GstJackAudioSink *sink;
-  guint i, res = 0, latency;
+  guint i, res = 0;
+#ifdef HAVE_JACK_0_120_2
+  jack_latency_range_t range;
+#else
+  guint latency;
+#endif
   jack_client_t *client;
 
   sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
   client = gst_jack_audio_client_get_client (sink->client);
 
   for (i = 0; i < sink->port_count; i++) {
-    latency = jack_port_get_total_latency (client, sink->ports[i]);
+#ifdef HAVE_JACK_0_120_2
+    jack_port_get_latency_range (sink->ports[i], JackPlaybackLatency, &range);
+    if (range.max > res)
+      res = range.max;
+#else
+    latency = jack_port_get_total_latency (client, src->ports[i]);
     if (latency > res)
       res = latency;
+#endif
   }
 
   GST_LOG_OBJECT (sink, "delay %u", res);
index 08b325ead7a4817e332ea86ebec4ada15943f64f..b4840574a3214cd0c8204867631327f56289d698 100644 (file)
@@ -603,16 +603,27 @@ static guint
 gst_jack_ring_buffer_delay (GstRingBuffer * buf)
 {
   GstJackAudioSrc *src;
-  guint i, res = 0, latency;
+  guint i, res = 0;
+#ifdef HAVE_JACK_0_120_2
+  jack_latency_range_t range;
+#else
+  guint latency;
+#endif
   jack_client_t *client;
 
   src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
   client = gst_jack_audio_client_get_client (src->client);
 
   for (i = 0; i < src->port_count; i++) {
+#ifdef HAVE_JACK_0_120_2
+    jack_port_get_latency_range (src->ports[i], JackCaptureLatency, &range);
+    if (range.max > res)
+      res = range.max;
+#else
     latency = jack_port_get_total_latency (client, src->ports[i]);
     if (latency > res)
       res = latency;
+#endif
   }
 
   GST_DEBUG_OBJECT (src, "delay %u", res);