diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-09-02 19:05:42 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-09-02 19:05:42 +0000 |
| commit | f0cf20fc8e1c0a46520efdea13ad0470417b0a0d (patch) | |
| tree | 015061688954d9e341fa7e3f8fd0c0646e20d5aa /src/plugins/Output | |
| parent | 9accaab1d960a21085571b895e75b06b701c1396 (diff) | |
| download | qmmp-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')
| -rw-r--r-- | src/plugins/Output/jack/CMakeLists.txt | 21 | ||||
| -rw-r--r-- | src/plugins/Output/jack/bio2jack.c | 22 |
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); |
