Browse Source

Add carla_copy* calls and use them where useful

tags/1.9.4
falkTX 12 years ago
parent
commit
1387d56fce
13 changed files with 72 additions and 29 deletions
  1. +4
    -4
      source/backend/engine/CarlaEngine.cpp
  2. +1
    -1
      source/backend/engine/CarlaEngineJack.cpp
  3. +3
    -3
      source/backend/engine/CarlaEnginePlugin.cpp
  4. +4
    -4
      source/backend/engine/CarlaEngineRtAudio.cpp
  5. +3
    -3
      source/backend/plugin/DssiPlugin.cpp
  6. +1
    -1
      source/backend/plugin/FluidSynthPlugin.cpp
  7. +3
    -3
      source/backend/plugin/LadspaPlugin.cpp
  8. +1
    -1
      source/backend/plugin/LinuxSamplerPlugin.cpp
  9. +3
    -3
      source/backend/plugin/NativePlugin.cpp
  10. +1
    -1
      source/utils/CarlaLibUtils.hpp
  11. +1
    -1
      source/utils/CarlaString.hpp
  12. +46
    -3
      source/utils/CarlaUtils.hpp
  13. +1
    -1
      source/utils/RtList.hpp

+ 4
- 4
source/backend/engine/CarlaEngine.cpp View File

@@ -1370,8 +1370,8 @@ void CarlaEngine::processRack(float* inBuf[2], float* outBuf[2], const uint32_t
if (processed)
{
// initialize inputs (from previous outputs)
std::memcpy(inBuf[0], outBuf[0], sizeof(float)*frames);
std::memcpy(inBuf[1], outBuf[1], sizeof(float)*frames);
carla_copyFloat(inBuf[0], outBuf[0], frames);
carla_copyFloat(inBuf[1], outBuf[1], frames);
std::memcpy(kData->rack.in, kData->rack.out, sizeof(EngineEvent)*RACK_EVENT_COUNT);

// initialize outputs (zero)
@@ -1432,8 +1432,8 @@ void CarlaEngine::processRack(float* inBuf[2], float* outBuf[2], const uint32_t
// if no plugins in the rack, copy inputs over outputs
if (! processed)
{
std::memcpy(outBuf[0], inBuf[0], sizeof(float)*frames);
std::memcpy(outBuf[1], inBuf[1], sizeof(float)*frames);
carla_copyFloat(outBuf[0], inBuf[0], frames);
carla_copyFloat(outBuf[1], inBuf[1], frames);
std::memcpy(kData->rack.out, kData->rack.in, sizeof(EngineEvent)*RACK_EVENT_COUNT);
}
}


+ 1
- 1
source/backend/engine/CarlaEngineJack.cpp View File

@@ -340,7 +340,7 @@ public:
return;

uint8_t jdata[size];
std::memcpy(jdata, data, sizeof(uint8_t)*size);
carla_copy<uint8_t>(jdata, data, size);

jdata[0] = data[0] + channel;



+ 3
- 3
source/backend/engine/CarlaEnginePlugin.cpp View File

@@ -64,7 +64,7 @@ public:
paramBuffers[paramBalance] = 63.5f;
paramBuffers[paramPan] = 63.5f;

std::memcpy(prevParamBuffers, paramBuffers, sizeof(float)*paramCount);
carla_copyFloat(prevParamBuffers, paramBuffers, paramCount);

// set-up engine
fOptions.processMode = PROCESS_MODE_CONTINUOUS_RACK;
@@ -400,7 +400,7 @@ protected:
}
#endif

std::memcpy(prevParamBuffers, paramBuffers, sizeof(float)*paramCount);
carla_copyFloat(prevParamBuffers, paramBuffers, paramCount);
}

void d_deactivate()
@@ -443,7 +443,7 @@ protected:
carlaEvent->value = paramBuffers[i]/127;
}
}
std::memcpy(prevParamBuffers, paramBuffers, sizeof(float)*paramCount);
carla_copyFloat(prevParamBuffers, paramBuffers, paramCount);

// initialize midi input
std::memset(rackMidiEventsIn, 0, sizeof(CarlaEngineMidiEvent)*CarlaEngine::MAX_MIDI_EVENTS);


+ 4
- 4
source/backend/engine/CarlaEngineRtAudio.cpp View File

@@ -298,8 +298,8 @@ protected:
}
else
{
std::memcpy(fAudioInBuf1, insPtr, sizeof(float)*nframes);
std::memcpy(fAudioInBuf2, insPtr+nframes, sizeof(float)*nframes);
carla_copyFloat(fAudioInBuf1, insPtr, nframes);
carla_copyFloat(fAudioInBuf2, insPtr+nframes, nframes);
}

// initialize audio output
@@ -417,8 +417,8 @@ protected:
}
else
{
std::memcpy(outsPtr, fAudioOutBuf1, sizeof(float)*nframes);
std::memcpy(outsPtr+nframes, fAudioOutBuf2, sizeof(float)*nframes);
carla_copyFloat(outsPtr, fAudioOutBuf1, nframes);
carla_copyFloat(outsPtr+nframes, fAudioOutBuf2, nframes);
}

// output events


+ 3
- 3
source/backend/plugin/DssiPlugin.cpp View File

@@ -1365,7 +1365,7 @@ public:
if (doBalance)
{
if (i % 2 == 0)
std::memcpy(oldBufLeft, outBuffer[i], sizeof(float)*frames);
carla_copyFloat(oldBufLeft, outBuffer[i], frames);

float balRangeL = (kData->postProc.balanceLeft + 1.0f)/2.0f;
float balRangeR = (kData->postProc.balanceRight + 1.0f)/2.0f;
@@ -1400,7 +1400,7 @@ public:
if (kData->latency > 0 && kData->latency < frames)
{
for (i=0; i < kData->audioIn.count; i++)
std::memcpy(kData->latencyBuffers[i], inBuffer[i] + (frames - kData->latency), sizeof(float)*kData->latency);
carla_copyFloat(kData->latencyBuffers[i], inBuffer[i] + (frames - kData->latency), kData->latency);
}
#endif
} // End of Post-processing
@@ -1438,7 +1438,7 @@ public:
void processSingle(float** const inBuffer, float** const outBuffer, const uint32_t frames, const uint32_t timeOffset, const uint32_t midiEventCount)
{
for (uint32_t i=0; i < kData->audioIn.count; i++)
std::memcpy(fAudioInBuffers[i], inBuffer[i]+timeOffset, sizeof(float)*frames);
carla_copyFloat(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames);
for (uint32_t i=0; i < kData->audioOut.count; i++)
carla_zeroFloat(fAudioOutBuffers[i], frames);



+ 1
- 1
source/backend/plugin/FluidSynthPlugin.cpp View File

@@ -1219,7 +1219,7 @@ public:
if (doBalance)
{
if (i % 2 == 0)
std::memcpy(oldBufLeft, outBuffer[i], sizeof(float)*frames);
carla_copyFloat(oldBufLeft, outBuffer[i], frames);

float balRangeL = (kData->postProc.balanceLeft + 1.0f)/2.0f;
float balRangeR = (kData->postProc.balanceRight + 1.0f)/2.0f;


+ 3
- 3
source/backend/plugin/LadspaPlugin.cpp View File

@@ -1036,7 +1036,7 @@ public:
if (doBalance)
{
if (i % 2 == 0)
std::memcpy(oldBufLeft, outBuffer[i], sizeof(float)*frames);
carla_copyFloat(oldBufLeft, outBuffer[i], frames);

float balRangeL = (kData->postProc.balanceLeft + 1.0f)/2.0f;
float balRangeR = (kData->postProc.balanceRight + 1.0f)/2.0f;
@@ -1071,7 +1071,7 @@ public:
if (kData->latency > 0 && kData->latency < frames)
{
for (i=0; i < kData->audioIn.count; i++)
std::memcpy(kData->latencyBuffers[i], inBuffer[i] + (frames - kData->latency), sizeof(float)*kData->latency);
carla_copyFloat(kData->latencyBuffers[i], inBuffer[i] + (frames - kData->latency), kData->latency);
}
#endif
} // End of Post-processing
@@ -1109,7 +1109,7 @@ public:
void processSingle(float** const inBuffer, float** const outBuffer, const uint32_t frames, const uint32_t timeOffset)
{
for (uint32_t i=0; i < kData->audioIn.count; i++)
std::memcpy(fAudioInBuffers[i], inBuffer[i]+timeOffset, sizeof(float)*frames);
carla_copyFloat(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames);
for (uint32_t i=0; i < kData->audioOut.count; i++)
carla_zeroFloat(fAudioOutBuffers[i], frames);



+ 1
- 1
source/backend/plugin/LinuxSamplerPlugin.cpp View File

@@ -764,7 +764,7 @@ public:
if (do_balance)
{
if (i%2 == 0)
memcpy(&oldBufLeft, outBuffer[i], sizeof(float)*frames);
carla_copyFloat(oldBufLeft, outBuffer[i], frames);

bal_rangeL = (x_balanceLeft+1.0)/2;
bal_rangeR = (x_balanceRight+1.0)/2;


+ 3
- 3
source/backend/plugin/NativePlugin.cpp View File

@@ -1377,7 +1377,7 @@ public:
if (doBalance)
{
if (i % 2 == 0)
std::memcpy(oldBufLeft, outBuffer[i], sizeof(float)*frames);
carla_copyFloat(oldBufLeft, outBuffer[i], frames);

float balRangeL = (kData->postProc.balanceLeft + 1.0f)/2.0f;
float balRangeR = (kData->postProc.balanceRight + 1.0f)/2.0f;
@@ -1465,7 +1465,7 @@ public:
void processSingle(float** const inBuffer, float** const outBuffer, const uint32_t frames, const uint32_t timeOffset)
{
for (uint32_t i=0; i < kData->audioIn.count; i++)
std::memcpy(fAudioInBuffers[i], inBuffer[i]+timeOffset, sizeof(float)*frames);
carla_copyFloat(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames);
for (uint32_t i=0; i < kData->audioOut.count; i++)
carla_zeroFloat(fAudioOutBuffers[i], frames);

@@ -1576,7 +1576,7 @@ protected:
return &fTimeInfo;
}

bool handleWriteMidiEvent(const MidiEvent* const event)
bool handleWriteMidiEvent(const ::MidiEvent* const event)
{
CARLA_ASSERT(fEnabled);
CARLA_ASSERT(fMidiOut.count > 0);


+ 1
- 1
source/utils/CarlaLibUtils.hpp View File

@@ -77,7 +77,7 @@ const char* lib_error(const char* const filename)

#ifdef CARLA_OS_WIN
static char libError[2048];
std::memset(libError, 0, sizeof(char)*2048);
carla_zeroMem(libError, sizeof(char)*2048);

LPVOID winErrorString;
DWORD winErrorCode = GetLastError();


+ 1
- 1
source/utils/CarlaString.hpp View File

@@ -313,7 +313,7 @@ public:
if (unsigned int len = carla_base64_decode(buffer, binaryBuffer))
{
uint8_t* const binaryBufferHeap = new uint8_t[len];
std::memcpy(binaryBufferHeap, binaryBuffer, len);
carla_copy<uint8_t>(binaryBufferHeap, binaryBuffer, len);

*rawPtr = binaryBufferHeap;
return len;


+ 46
- 3
source/utils/CarlaUtils.hpp View File

@@ -235,6 +235,36 @@ const T& carla_fixValue(const T& min, const T& max, const T& value)
return value;
}

template<typename T>
static inline
void carla_copy(T* dataDst, T* dataSrc, const size_t size)
{
CARLA_ASSERT(dataDst != nullptr);
CARLA_ASSERT(dataSrc != nullptr);
CARLA_ASSERT(size > 0);

if (dataDst == nullptr || dataSrc == nullptr || size == 0)
return;

for (size_t i=0; i < size; i++)
*dataDst++ = *dataSrc++;
}

template<typename T>
static inline
void carla_copy(T* dataDst, const T* dataSrc, const size_t size)
{
CARLA_ASSERT(dataDst != nullptr);
CARLA_ASSERT(dataSrc != nullptr);
CARLA_ASSERT(size > 0);

if (dataDst == nullptr || dataSrc == nullptr || size == 0)
return;

for (size_t i=0; i < size; i++)
*dataDst++ = *dataSrc++;
}

template<typename T>
static inline
void carla_fill(T* data, const size_t size, const T v)
@@ -242,13 +272,25 @@ void carla_fill(T* data, const size_t size, const T v)
CARLA_ASSERT(data != nullptr);
CARLA_ASSERT(size > 0);

if (data == nullptr)
if (data == nullptr || size == 0)
return;

for (unsigned int i=0; i < size; i++)
for (size_t i=0; i < size; i++)
*data++ = v;
}

static inline
void carla_copyDouble(double* dataDst, double* dataSrc, const size_t size)
{
carla_copy<double>(dataDst, dataSrc, size);
}

static inline
void carla_copyFloat(float* dataDst, float* dataSrc, const size_t size)
{
carla_copy<float>(dataDst, dataSrc, size);
}

static inline
void carla_zeroDouble(double* data, const size_t size)
{
@@ -268,8 +310,9 @@ static inline
void carla_zeroMem(void* const memory, const size_t numBytes)
{
CARLA_ASSERT(memory != nullptr);
CARLA_ASSERT(numBytes > 0);

if (memory == nullptr)
if (memory == nullptr || numBytes == 0)
return;

std::memset(memory, 0, numBytes);


+ 1
- 1
source/utils/RtList.hpp View File

@@ -268,7 +268,7 @@ private:
if (reset)
{
reset = false;
std::memset(&value, 0, sizeof(T));
carla_zeroMem(&value, sizeof(T));
}

return value;


Loading…
Cancel
Save