diff --git a/ChangeLog b/ChangeLog index f942a5b602..f0f46466f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-11-23 Stefan Kost + + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + Query port latencies for sink/src delays. + + * ext/jack/gstjackbin.c: + No printf please. + 2008-11-23 Sebastian Dröge * gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_klv_packet), diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index 265ec68c70..228a229768 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -594,9 +594,17 @@ static guint gst_jack_ring_buffer_delay (GstRingBuffer * buf) { GstJackAudioSink *sink; - guint res = 0; + guint i, res = 0, latency; + 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]); + if (latency > res) + res = latency; + } GST_DEBUG_OBJECT (sink, "delay %u", res); diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c index 6462d239f2..682a684afe 100644 --- a/ext/jack/gstjackaudiosrc.c +++ b/ext/jack/gstjackaudiosrc.c @@ -601,9 +601,17 @@ static guint gst_jack_ring_buffer_delay (GstRingBuffer * buf) { GstJackAudioSrc *src; - guint res = 0; + guint i, res = 0, latency; + 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++) { + latency = jack_port_get_total_latency (client, src->ports[i]); + if (latency > res) + res = latency; + } GST_DEBUG_OBJECT (src, "delay %u", res); diff --git a/ext/jack/gstjackbin.c b/ext/jack/gstjackbin.c index 7b219c7068..08fed371e0 100644 --- a/ext/jack/gstjackbin.c +++ b/ext/jack/gstjackbin.c @@ -337,7 +337,7 @@ static void shutdown (void *arg) { /* GstJackClient *client = (GstJackClient*) arg; */ - printf ("shutdown %p\n", arg); + JACK_DEBUG ("shutdown %p\n", arg); /* gst_element_set_state (GST_ELEMENT (client->manager), GST_STATE_READY); */ }