summaryrefslogtreecommitdiffstats
path: root/src/engine/channelmixer_autogen.cpp
diff options
context:
space:
mode:
authorbe_ <be.0@gmx.com>2017-06-11 13:27:24 -0500
committerbe_ <be.0@gmx.com>2017-06-11 13:27:24 -0500
commitd7a9d1ab9d08ee15614a95a024a11732b88e9b44 (patch)
treefabe64a0abbbfc4daeb6d521378178d2605684e1 /src/engine/channelmixer_autogen.cpp
parenta80814d032d1288694e1a8582aa13f8c5096057a (diff)
fix assigning multiple channels to a crossfader orientation
Diffstat (limited to 'src/engine/channelmixer_autogen.cpp')
-rw-r--r--src/engine/channelmixer_autogen.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/engine/channelmixer_autogen.cpp b/src/engine/channelmixer_autogen.cpp
index b40d19a60d..a436949f89 100644
--- a/src/engine/channelmixer_autogen.cpp
+++ b/src/engine/channelmixer_autogen.cpp
@@ -14509,9 +14509,9 @@ void ChannelMixer::applyEffectsAndMixChannels(const EngineMaster::GainCalculator
unsigned int iSampleRate,
EngineEffectsManager* pEngineEffectsManager) {
int totalActive = activeChannels->size();
+ SampleUtil::clear(pOutput, iBufferSize);
if (totalActive == 0) {
ScopedTimer t("EngineMaster::applyEffectsAndMixChannels_0active");
- SampleUtil::clear(pOutput, iBufferSize);
} else if (totalActive == 1) {
ScopedTimer t("EngineMaster::applyEffectsAndMixChannels_1active");
CSAMPLE_GAIN newGain[1];
@@ -21682,7 +21682,13 @@ void ChannelMixer::applyEffectsAndMixChannels(const EngineMaster::GainCalculator
gainCache.m_gain = newGain;
CSAMPLE* pBuffer = pChannelInfo->m_pBuffer;
SampleUtil::applyGain(pBuffer, newGain, iBufferSize);
- pEngineEffectsManager->process(pChannelInfo->m_handle, outputHandle, pBuffer, pOutput, iBufferSize, iSampleRate, pChannelInfo->m_features);
+ if (pEngineEffectsManager) {
+ pEngineEffectsManager->process(pChannelInfo->m_handle, outputHandle, pBuffer, pOutput, iBufferSize, iSampleRate, pChannelInfo->m_features);
+ } else {
+ for (unsigned int i = 0; i < iBufferSize; ++i) {
+ pOutput[i] += pBuffer[i];
+ }
+ }
}
}
}
@@ -21695,9 +21701,9 @@ void ChannelMixer::applyEffectsAndMixChannelsRamping(const EngineMaster::GainCal
unsigned int iSampleRate,
EngineEffectsManager* pEngineEffectsManager) {
int totalActive = activeChannels->size();
+ SampleUtil::clear(pOutput, iBufferSize);
if (totalActive == 0) {
ScopedTimer t("EngineMaster::applyEffectsAndMixChannelsRamping_0active");
- SampleUtil::clear(pOutput, iBufferSize);
} else if (totalActive == 1) {
ScopedTimer t("EngineMaster::applyEffectsAndMixChannelsRamping_1active");
CSAMPLE_GAIN oldGain[1];
@@ -29429,7 +29435,13 @@ void ChannelMixer::applyEffectsAndMixChannelsRamping(const EngineMaster::GainCal
gainCache.m_gain = newGain;
CSAMPLE* pBuffer = pChannelInfo->m_pBuffer;
SampleUtil::applyRampingGain(pBuffer, oldGain, newGain, iBufferSize);
- pEngineEffectsManager->process(pChannelInfo->m_handle, outputHandle, pBuffer, pOutput, iBufferSize, iSampleRate, pChannelInfo->m_features);
+ if (pEngineEffectsManager) {
+ pEngineEffectsManager->process(pChannelInfo->m_handle, outputHandle, pBuffer, pOutput, iBufferSize, iSampleRate, pChannelInfo->m_features);
+ } else {
+ for (unsigned int i = 0; i < iBufferSize; ++i) {
+ pOutput[i] += pBuffer[i];
+ }
+ }
}
}
}