1 #pragma once
2 
3 #include <QList>
4 
5 #include "engine/channelhandle.h"
6 #include "engine/effects/message.h"
7 #include "engine/effects/groupfeaturestate.h"
8 #include "util/samplebuffer.h"
9 
10 class EngineEffectChain;
11 
12 //TODO(Be): Remove this superfluous class.
13 class EngineEffectRack : public EffectsRequestHandler {
14   public:
15     EngineEffectRack(int iRackNumber);
16     virtual ~EngineEffectRack();
17 
18     bool processEffectsRequest(
19         EffectsRequest& message,
20         EffectsResponsePipe* pResponsePipe);
21 
22     bool process(const ChannelHandle& inputHandle,
23                  const ChannelHandle& outputHandle,
24                  CSAMPLE* pIn, CSAMPLE* pOut,
25                  const unsigned int numSamples,
26                  const unsigned int sampleRate,
27                  const GroupFeatureState& groupFeatures);
28 
number()29     int number() const {
30         return m_iRackNumber;
31     }
32 
33   private:
34     bool addEffectChain(EngineEffectChain* pChain, int iIndex);
35     bool removeEffectChain(EngineEffectChain* pChain, int iIndex);
36 
debugString()37     QString debugString() const {
38         return QString("EngineEffectRack%1").arg(m_iRackNumber);
39     }
40 
41     int m_iRackNumber;
42     QList<EngineEffectChain*> m_chains;
43 
44     mixxx::SampleBuffer m_buffer1;
45     mixxx::SampleBuffer m_buffer2;
46 
47     DISALLOW_COPY_AND_ASSIGN(EngineEffectRack);
48 };
49