diff options
author | be_ <be.0@gmx.com> | 2017-12-18 10:49:35 -0600 |
---|---|---|
committer | be_ <be.0@gmx.com> | 2017-12-18 10:49:35 -0600 |
commit | 66c36440c48fc821b0ea6ef7479b14b52b657ac3 (patch) | |
tree | cd3f7c519bc5ba62a39a34af37a331692f96aa64 /src/engine/effects | |
parent | 2b76940f53194c97cb022243614105d427ec2d5b (diff) |
add SignalProcessingStage enum class to replace preFader bool values
Diffstat (limited to 'src/engine/effects')
-rw-r--r-- | src/engine/effects/engineeffectsmanager.cpp | 59 | ||||
-rw-r--r-- | src/engine/effects/engineeffectsmanager.h | 8 | ||||
-rw-r--r-- | src/engine/effects/message.h | 4 |
3 files changed, 30 insertions, 41 deletions
diff --git a/src/engine/effects/engineeffectsmanager.cpp b/src/engine/effects/engineeffectsmanager.cpp index c40b65ee31..9096e59475 100644 --- a/src/engine/effects/engineeffectsmanager.cpp +++ b/src/engine/effects/engineeffectsmanager.cpp @@ -12,8 +12,6 @@ EngineEffectsManager::EngineEffectsManager(EffectsResponsePipe* pResponsePipe) m_buffer1(MAX_BUFFER_LEN), m_buffer2(MAX_BUFFER_LEN) { // Try to prevent memory allocation. - m_preFaderRacks.reserve(256); - m_postFaderRacks.reserve(256); m_chains.reserve(256); m_effects.reserve(256); } @@ -35,8 +33,7 @@ void EngineEffectsManager::onCallbackStart() { break; case EffectsRequest::ADD_CHAIN_TO_RACK: case EffectsRequest::REMOVE_CHAIN_FROM_RACK: - VERIFY_OR_DEBUG_ASSERT(m_preFaderRacks.contains(request->pTargetRack) - || m_postFaderRacks.contains(request->pTargetRack)) { + VERIFY_OR_DEBUG_ASSERT(request->pTargetRack) { response.success = false; response.status = EffectsResponse::NO_SUCH_RACK; break; @@ -133,7 +130,7 @@ void EngineEffectsManager::processPreFaderInPlace(const ChannelHandle& inputHand // of the GroupFeatureState, it will not sound the same as if it is loaded into // a StandardEffectRack. GroupFeatureState featureState; - processInner(m_preFaderRacks, + processInner(SignalProcessingStage::Prefader, inputHandle, outputHandle, pInOut, pInOut, numSamples, sampleRate, featureState); @@ -148,7 +145,7 @@ void EngineEffectsManager::processPostFaderInPlace( const GroupFeatureState& groupFeatures, const CSAMPLE_GAIN oldGain, const CSAMPLE_GAIN newGain) { - processInner(m_postFaderRacks, + processInner(SignalProcessingStage::Postfader, inputHandle, outputHandle, pInOut, pInOut, numSamples, sampleRate, groupFeatures, @@ -164,7 +161,7 @@ void EngineEffectsManager::processPostFaderAndMix( const GroupFeatureState& groupFeatures, const CSAMPLE_GAIN oldGain, const CSAMPLE_GAIN newGain) { - processInner(m_postFaderRacks, + processInner(SignalProcessingStage::Postfader, inputHandle, outputHandle, pIn, pOut, numSamples, sampleRate, groupFeatures, @@ -172,7 +169,7 @@ void EngineEffectsManager::processPostFaderAndMix( } void EngineEffectsManager::processInner( - const QList<EngineEffectRack*>& racks, + const SignalProcessingStage stage, const ChannelHandle& inputHandle, const ChannelHandle& outputHandle, CSAMPLE* pIn, CSAMPLE* pOut, @@ -181,6 +178,8 @@ void EngineEffectsManager::processInner( const GroupFeatureState& groupFeatures, const CSAMPLE_GAIN oldGain, const CSAMPLE_GAIN newGain) { + + const QList<EngineEffectRack*>& racks = m_racksByStage.value(stage); if (pIn == pOut) { // Gain and effects are applied to the buffer in place, // modifying the original input buffer @@ -234,30 +233,26 @@ void EngineEffectsManager::processInner( } } -bool EngineEffectsManager::addPostFaderEffectRack(EngineEffectRack* pRack) { - VERIFY_OR_DEBUG_ASSERT(!m_postFaderRacks.contains(pRack)) { +bool EngineEffectsManager::addEffectRack(EngineEffectRack* pRack, + SignalProcessingStage stage) { + QList<EngineEffectRack*>& rackList = m_racksByStage[stage]; + VERIFY_OR_DEBUG_ASSERT(!rackList.contains(pRack)) { return false; } - m_postFaderRacks.append(pRack); + rackList.append(pRack); return true; } -bool EngineEffectsManager::removePostFaderEffectRack(EngineEffectRack* pRack) { - return m_postFaderRacks.removeAll(pRack) > 0; -} - -bool EngineEffectsManager::addPreFaderEffectRack(EngineEffectRack* pRack) { - VERIFY_OR_DEBUG_ASSERT(!m_preFaderRacks.contains(pRack)) { +bool EngineEffectsManager::removeEffectRack(EngineEffectRack* pRack, + SignalProcessingStage stage) { + QList<EngineEffectRack*>& rackList = m_racksByStage[stage]; + VERIFY_OR_DEBUG_ASSERT(rackList.contains(pRack)) { return false; } - m_preFaderRacks.append(pRack); + rackList.removeAll(pRack); return true; } -bool EngineEffectsManager::removePreFaderEffectRack(EngineEffectRack* pRack) { - return m_preFaderRacks.removeAll(pRack) > 0; -} - bool EngineEffectsManager::processEffectsRequest(EffectsRequest& message, EffectsResponsePipe* pResponsePipe) { EffectsResponse response(message); @@ -265,26 +260,18 @@ bool EngineEffectsManager::processEffectsRequest(EffectsRequest& message, case EffectsRequest::ADD_EFFECT_RACK: if (kEffectDebugOutput) { qDebug() << debugString() << "ADD_EFFECT_RACK" - << message.AddEffectRack.pRack - << message.AddEffectRack.preFader; - } - if (message.AddEffectRack.preFader) { - response.success = addPreFaderEffectRack(message.AddEffectRack.pRack); - } else { - response.success = addPostFaderEffectRack(message.AddEffectRack.pRack); + << message.AddEffectRack.pRack; } + response.success = addEffectRack(message.AddEffectRack.pRack, + message.AddEffectRack.signalProcessingStage); break; case EffectsRequest::REMOVE_EFFECT_RACK: if (kEffectDebugOutput) { qDebug() << debugString() << "REMOVE_EFFECT_RACK" - << message.RemoveEffectRack.pRack - << message.RemoveEffectRack.preFader; - } - if (message.AddEffectRack.preFader) { - response.success = removePreFaderEffectRack(message.AddEffectRack.pRack); - } else { - response.success = removePostFaderEffectRack(message.AddEffectRack.pRack); + << message.RemoveEffectRack.pRack; } + response.success = removeEffectRack(message.AddEffectRack.pRack, + message.AddEffectRack.signalProcessingStage); break; default: return false; diff --git a/src/engine/effects/engineeffectsmanager.h b/src/engine/effects/engineeffectsmanager.h index 7b799850eb..d40406c281 100644 --- a/src/engine/effects/engineeffectsmanager.h +++ b/src/engine/effects/engineeffectsmanager.h @@ -64,13 +64,16 @@ class EngineEffectsManager : public EffectsRequestHandler { return QString("EngineEffectsManager"); } + bool addEffectRack(EngineEffectRack* pRack, SignalProcessingStage stage); + bool removeEffectRack(EngineEffectRack* pRack, SignalProcessingStage stage); + bool addPreFaderEffectRack(EngineEffectRack* pRack); bool removePreFaderEffectRack(EngineEffectRack* pRack); bool addPostFaderEffectRack(EngineEffectRack* pRack); bool removePostFaderEffectRack(EngineEffectRack* pRack); - void processInner(const QList<EngineEffectRack*>& racks, + void processInner(const SignalProcessingStage stage, const ChannelHandle& inputHandle, const ChannelHandle& outputHandle, CSAMPLE* pIn, CSAMPLE* pOut, @@ -81,8 +84,7 @@ class EngineEffectsManager : public EffectsRequestHandler { const CSAMPLE_GAIN newGain = CSAMPLE_GAIN_ONE); QScopedPointer<EffectsResponsePipe> m_pResponsePipe; - QList<EngineEffectRack*> m_preFaderRacks; - QList<EngineEffectRack*> m_postFaderRacks; + QHash<SignalProcessingStage, QList<EngineEffectRack*>> m_racksByStage; QList<EngineEffectChain*> m_chains; QList<EngineEffect*> m_effects; diff --git a/src/engine/effects/message.h b/src/engine/effects/message.h index de257d1717..66fd63280b 100644 --- a/src/engine/effects/message.h +++ b/src/engine/effects/message.h @@ -95,11 +95,11 @@ struct EffectsRequest { union { struct { EngineEffectRack* pRack; - bool preFader; + SignalProcessingStage signalProcessingStage; } AddEffectRack; struct { EngineEffectRack* pRack; - bool preFader; + SignalProcessingStage signalProcessingStage; } RemoveEffectRack; struct { EngineEffectChain* pChain; |