diff options
author | be_ <be.0@gmx.com> | 2017-06-11 13:27:24 -0500 |
---|---|---|
committer | be_ <be.0@gmx.com> | 2017-06-11 13:27:24 -0500 |
commit | d7a9d1ab9d08ee15614a95a024a11732b88e9b44 (patch) | |
tree | fabe64a0abbbfc4daeb6d521378178d2605684e1 /src/engine/channelmixer_autogen.cpp | |
parent | a80814d032d1288694e1a8582aa13f8c5096057a (diff) |
fix assigning multiple channels to a crossfader orientation
Diffstat (limited to 'src/engine/channelmixer_autogen.cpp')
-rw-r--r-- | src/engine/channelmixer_autogen.cpp | 20 |
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]; + } + } } } } |