From 9ebd921fda243cac2fd0f505b21f524f6778adc3 Mon Sep 17 00:00:00 2001 From: sletz Date: Fri, 20 Jan 2012 15:30:44 +0000 Subject: [PATCH] Dymamic choice of sample format in Windows JackRouter(2) git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4714 0c269be4-1314-0410-8aa9-9f06e86f4224 --- windows/JackRouter/JackRouter.cpp | 28 ++++++++++++------------ windows/Setup/JackRouter.ini | 1 + windows/Setup/src/32bits/JackRouter.dll | Bin 29696 -> 29696 bytes windows/Setup/src/64bits/JackRouter.dll | Bin 35328 -> 35328 bytes 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/windows/JackRouter/JackRouter.cpp b/windows/JackRouter/JackRouter.cpp index 56324e8f..6d177f08 100644 --- a/windows/JackRouter/JackRouter.cpp +++ b/windows/JackRouter/JackRouter.cpp @@ -198,7 +198,7 @@ JackRouter::JackRouter() : AsioDriver() fAutoConnectIn = get_private_profile_int("AUTO_CONNECT", "input", 1, confPath.c_str()); fAutoConnectOut = get_private_profile_int("AUTO_CONNECT", "output", 1, confPath.c_str()); - fFloatSample = get_private_profile_int("IO", "float-samples", 1, confPath.c_str()); + fFloatSample = get_private_profile_int("IO", "float-sample", 1, confPath.c_str()); FreeLibrary(handle); @@ -207,11 +207,11 @@ JackRouter::JackRouter() : AsioDriver() } if (!fFloatSample) { - fInputBuffers = new long*[kNumInputs]; - fOutputBuffers = new long*[kNumOutputs]; + fInputBuffers = (void**)new long*[kNumInputs]; + fOutputBuffers = (void**)new long*[kNumOutputs]; } else { - fInputBuffers = new float*[kNumInputs]; - fOutputBuffers = new float*[kNumOutputs]; + fInputBuffers = (void**)new float*[kNumInputs]; + fOutputBuffers = (void**)new float*[kNumOutputs]; } fInMap = new long[kNumInputs]; @@ -319,14 +319,14 @@ int JackRouter::process(jack_nframes_t nframes, void* arg) int pos = (driver->fToggle) ? 0 : driver->fBufferSize ; for (i = 0; i < driver->fActiveInputs; i++) { - if (!fFloatSample) { + if (!driver->fFloatSample) { jack_default_audio_sample_t* buffer = (jack_default_audio_sample_t*)jack_port_get_buffer(driver->fInputPorts[i], nframes); - long* in = driver->fInputBuffers[i] + pos; + long* in = (long*)driver->fInputBuffers[i] + pos; for (j = 0; j < nframes; j++) { in[j] = buffer[j] * jack_default_audio_sample_t(0x7fffffff); } } else { - memcpy(driver->fInputBuffers[i] + pos, + memcpy((float*)driver->fInputBuffers[i] + pos, jack_port_get_buffer(driver->fInputPorts[i], nframes), nframes * sizeof(jack_default_audio_sample_t)); } @@ -335,16 +335,16 @@ int JackRouter::process(jack_nframes_t nframes, void* arg) driver->bufferSwitch(); for (i = 0; i < driver->fActiveOutputs; i++) { - if (!fFloatSample) { + if (!driver->fFloatSample) { jack_default_audio_sample_t* buffer = (jack_default_audio_sample_t*)jack_port_get_buffer(driver->fOutputPorts[i], nframes); - long* out = driver->fOutputBuffers[i] + pos; + long* out = (long*)driver->fOutputBuffers[i] + pos; jack_default_audio_sample_t gain = jack_default_audio_sample_t(1)/jack_default_audio_sample_t(0x7fffffff); for (j = 0; j < nframes; j++) { buffer[j] = out[j] * gain; } } else { memcpy(jack_port_get_buffer(driver->fOutputPorts[i], nframes), - driver->fOutputBuffers[i] + pos, + (float*)driver->fOutputBuffers[i] + pos, nframes * sizeof(jack_default_audio_sample_t)); } } @@ -599,12 +599,12 @@ ASIOError JackRouter::createBuffers(ASIOBufferInfo *bufferInfos, long numChannel fInMap[fActiveInputs] = info->channelNum; if (!fFloatSample) { fInputBuffers[fActiveInputs] = new long[fBufferSize * 2]; // double buffer - } + } else { fInputBuffers[fActiveInputs] = new jack_default_audio_sample_t[fBufferSize * 2]; // double buffer } if (fInputBuffers[fActiveInputs]) { info->buffers[0] = fInputBuffers[fActiveInputs]; - info->buffers[1] = fInputBuffers[fActiveInputs] + fBufferSize; + info->buffers[1] = (fFloatSample) ? (void*)((float*)fInputBuffers[fActiveInputs] + fBufferSize) : (void*)((long*)fInputBuffers[fActiveInputs] + fBufferSize); } else { info->buffers[0] = info->buffers[1] = 0; notEnoughMem = true; @@ -635,7 +635,7 @@ error: if (fOutputBuffers[fActiveOutputs]) { info->buffers[0] = fOutputBuffers[fActiveOutputs]; - info->buffers[1] = fOutputBuffers[fActiveOutputs] + fBufferSize; + info->buffers[1] = (fFloatSample) ? (void*)((float*)fOutputBuffers[fActiveOutputs] + fBufferSize) : (void*)((long*)fOutputBuffers[fActiveOutputs] + fBufferSize); } else { info->buffers[0] = info->buffers[1] = 0; notEnoughMem = true; diff --git a/windows/Setup/JackRouter.ini b/windows/Setup/JackRouter.ini index 8a62b6a7..2be31aea 100644 --- a/windows/Setup/JackRouter.ini +++ b/windows/Setup/JackRouter.ini @@ -1,6 +1,7 @@ [IO] input=4 output=4 +float-sample=1 [AUTO_CONNECT] input=1 diff --git a/windows/Setup/src/32bits/JackRouter.dll b/windows/Setup/src/32bits/JackRouter.dll index 211104e068b95c3eefce251748a1721fa245753a..50d00101b4b5bc6871aa8ccaa7eb599c3c95fa5b 100644 GIT binary patch delta 7827 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 delta 7413 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 diff --git a/windows/Setup/src/64bits/JackRouter.dll b/windows/Setup/src/64bits/JackRouter.dll index 0a67b5ab5a4b805b7e6736804c6bf341867a0e41..d3042c93053b0803f40802fb06edd339f389f59c 100644 GIT binary patch delta 12840 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 OvF%CU|Lo>k;lBZ}svH3T