aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/jack
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-09-02 19:05:42 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-09-02 19:05:42 +0000
commitf0cf20fc8e1c0a46520efdea13ad0470417b0a0d (patch)
tree015061688954d9e341fa7e3f8fd0c0646e20d5aa /src/plugins/Output/jack
parent9accaab1d960a21085571b895e75b06b701c1396 (diff)
downloadqmmp-f0cf20fc8e1c0a46520efdea13ad0470417b0a0d.tar.gz
qmmp-f0cf20fc8e1c0a46520efdea13ad0470417b0a0d.tar.bz2
qmmp-f0cf20fc8e1c0a46520efdea13ad0470417b0a0d.zip
fixed jack-1.9.6 support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2338 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/jack')
-rw-r--r--src/plugins/Output/jack/CMakeLists.txt21
-rw-r--r--src/plugins/Output/jack/bio2jack.c22
2 files changed, 43 insertions, 0 deletions
diff --git a/src/plugins/Output/jack/CMakeLists.txt b/src/plugins/Output/jack/CMakeLists.txt
index 4ba6f6535..845d2e871 100644
--- a/src/plugins/Output/jack/CMakeLists.txt
+++ b/src/plugins/Output/jack/CMakeLists.txt
@@ -31,6 +31,27 @@ pkg_check_modules(JACK jack samplerate)
include_directories(${JACK_INCLUDE_DIRS})
link_directories(${JACK_LIBRARY_DIRS})
+
+IF(JACK_FOUND)
+CHECK_CXX_SOURCE_COMPILES("
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <jack/jack.h>
+
+int main (int argc, char **argv)
+{
+ jack_latency_range_t range;
+ exit(0);
+}" JACK_NEW_API)
+
+ENDIF(JACK_FOUND)
+
+IF(JACK_NEW_API)
+ADD_DEFINITIONS(-DJACK_NEW_API)
+ENDIF(JACK_NEW_API)
+
+
SET(libjack_SRCS
outputjackfactory.cpp
outputjack.cpp
diff --git a/src/plugins/Output/jack/bio2jack.c b/src/plugins/Output/jack/bio2jack.c
index 9fe41b1c1..0b125335f 100644
--- a/src/plugins/Output/jack/bio2jack.c
+++ b/src/plugins/Output/jack/bio2jack.c
@@ -1655,18 +1655,27 @@ JACK_OpenEx(int *deviceID, unsigned int bits_per_channel,
/* FIXME: maybe we should keep different latency values for input vs output? */
if(drv->num_output_channels > 0)
{
+#ifdef JACK_NEW_API
jack_latency_range_t range;
jack_port_get_latency_range(drv->output_port[0], JackPlaybackLatency, &range);
periods = range.max / periodSize;
+#else
+ periods = jack_port_get_total_latency(drv->client, drv->output_port[0]) / periodSize;
+#endif
+
drv->latencyMS = periodSize * periods * 1000 / (drv->jack_sample_rate *
(drv->bits_per_channel / 8 *
drv->num_output_channels));
}
else if(drv->num_input_channels > 0)
{
+#ifdef JACK_NEW_API
jack_latency_range_t range;
jack_port_get_latency_range(drv->output_port[0], JackPlaybackLatency, &range);
periods = range.max / periodSize;
+#else
+ periods = jack_port_get_total_latency(drv->client, drv->output_port[0]) / periodSize;
+#endif
drv->latencyMS =
periodSize * periods * 1000 / (drv->jack_sample_rate *
(drv->bits_per_channel / 8 *
@@ -2546,9 +2555,13 @@ JACK_GetJackOutputLatency(int deviceID)
if(drv->client && drv->num_input_channels)
{
+#ifdef JACK_NEW_API
jack_latency_range_t range;
jack_port_get_latency_range(drv->output_port[0], JackCaptureLatency, &range);
return_val = range.max;
+#else
+ return_val = jack_port_get_total_latency(drv->client, drv->output_port[0]);
+#endif
}
TRACE("got latency of %ld frames\n", return_val);
@@ -2569,6 +2582,15 @@ JACK_GetJackInputLatency(int deviceID)
jack_latency_range_t range;
jack_port_get_latency_range(drv->output_port[0], JackPlaybackLatency, &range);
return_val = range.max;
+
+#ifdef JACK_NEW_API
+ jack_latency_range_t range;
+ jack_port_get_latency_range(drv->output_port[0], JackPlaybackLatency, &range);
+ return_val = range.max;
+#else
+ return_val = jack_port_get_total_latency(drv->client, drv->output_port[0]);
+#endif
+
}
TRACE("got latency of %ld frames\n", return_val);