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());
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;


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

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


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


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


Loading…
Cancel
Save