Browse Source

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
tags/1.9.9.5
sletz 13 years ago
parent
commit
9ebd921fda
4 changed files with 15 additions and 14 deletions
  1. +14
    -14
      windows/JackRouter/JackRouter.cpp
  2. +1
    -0
      windows/Setup/JackRouter.ini
  3. BIN
      windows/Setup/src/32bits/JackRouter.dll
  4. BIN
      windows/Setup/src/64bits/JackRouter.dll

+ 14
- 14
windows/JackRouter/JackRouter.cpp View File

@@ -198,7 +198,7 @@ JackRouter::JackRouter() : AsioDriver()
fAutoConnectIn = get_private_profile_int("AUTO_CONNECT", "input", 1, confPath.c_str()); fAutoConnectIn = get_private_profile_int("AUTO_CONNECT", "input", 1, confPath.c_str());
fAutoConnectOut = get_private_profile_int("AUTO_CONNECT", "output", 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); FreeLibrary(handle);
@@ -207,11 +207,11 @@ JackRouter::JackRouter() : AsioDriver()
} }
if (!fFloatSample) { if (!fFloatSample) {
fInputBuffers = new long*[kNumInputs];
fOutputBuffers = new long*[kNumOutputs];
fInputBuffers = (void**)new long*[kNumInputs];
fOutputBuffers = (void**)new long*[kNumOutputs];
} else { } else {
fInputBuffers = new float*[kNumInputs];
fOutputBuffers = new float*[kNumOutputs];
fInputBuffers = (void**)new float*[kNumInputs];
fOutputBuffers = (void**)new float*[kNumOutputs];
} }
fInMap = new long[kNumInputs]; fInMap = new long[kNumInputs];
@@ -319,14 +319,14 @@ int JackRouter::process(jack_nframes_t nframes, void* arg)
int pos = (driver->fToggle) ? 0 : driver->fBufferSize ; int pos = (driver->fToggle) ? 0 : driver->fBufferSize ;
for (i = 0; i < driver->fActiveInputs; i++) { 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); 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++) { for (j = 0; j < nframes; j++) {
in[j] = buffer[j] * jack_default_audio_sample_t(0x7fffffff); in[j] = buffer[j] * jack_default_audio_sample_t(0x7fffffff);
} }
} else { } else {
memcpy(driver->fInputBuffers[i] + pos,
memcpy((float*)driver->fInputBuffers[i] + pos,
jack_port_get_buffer(driver->fInputPorts[i], nframes), jack_port_get_buffer(driver->fInputPorts[i], nframes),
nframes * sizeof(jack_default_audio_sample_t)); nframes * sizeof(jack_default_audio_sample_t));
} }
@@ -335,16 +335,16 @@ int JackRouter::process(jack_nframes_t nframes, void* arg)
driver->bufferSwitch(); driver->bufferSwitch();
for (i = 0; i < driver->fActiveOutputs; i++) { 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); 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); jack_default_audio_sample_t gain = jack_default_audio_sample_t(1)/jack_default_audio_sample_t(0x7fffffff);
for (j = 0; j < nframes; j++) { for (j = 0; j < nframes; j++) {
buffer[j] = out[j] * gain; buffer[j] = out[j] * gain;
} }
} else { } else {
memcpy(jack_port_get_buffer(driver->fOutputPorts[i], nframes), 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)); nframes * sizeof(jack_default_audio_sample_t));
} }
} }
@@ -599,12 +599,12 @@ ASIOError JackRouter::createBuffers(ASIOBufferInfo *bufferInfos, long numChannel
fInMap[fActiveInputs] = info->channelNum; fInMap[fActiveInputs] = info->channelNum;
if (!fFloatSample) { if (!fFloatSample) {
fInputBuffers[fActiveInputs] = new long[fBufferSize * 2]; // double buffer fInputBuffers[fActiveInputs] = new long[fBufferSize * 2]; // double buffer
}
} else {
fInputBuffers[fActiveInputs] = new jack_default_audio_sample_t[fBufferSize * 2]; // double buffer fInputBuffers[fActiveInputs] = new jack_default_audio_sample_t[fBufferSize * 2]; // double buffer
} }
if (fInputBuffers[fActiveInputs]) { if (fInputBuffers[fActiveInputs]) {
info->buffers[0] = 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 { } else {
info->buffers[0] = info->buffers[1] = 0; info->buffers[0] = info->buffers[1] = 0;
notEnoughMem = true; notEnoughMem = true;
@@ -635,7 +635,7 @@ error:
if (fOutputBuffers[fActiveOutputs]) { if (fOutputBuffers[fActiveOutputs]) {
info->buffers[0] = 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 { } else {
info->buffers[0] = info->buffers[1] = 0; info->buffers[0] = info->buffers[1] = 0;
notEnoughMem = true; notEnoughMem = true;


+ 1
- 0
windows/Setup/JackRouter.ini View File

@@ -1,6 +1,7 @@
[IO] [IO]
input=4 input=4
output=4 output=4
float-sample=1
[AUTO_CONNECT] [AUTO_CONNECT]
input=1 input=1


BIN
windows/Setup/src/32bits/JackRouter.dll View File


BIN
windows/Setup/src/64bits/JackRouter.dll View File


Loading…
Cancel
Save