blob: 2ea5b464d16a169906ee38b2e2e85178eb6c122b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/***************************************************************************
enginechannel.h - description
-------------------
begin : Sun Apr 28 2002
copyright : (C) 2002 by
email :
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef ENGINECHANNEL_H
#define ENGINECHANNEL_H
#include "control/controlproxy.h"
#include "effects/effectsmanager.h"
#include "engine/engineobject.h"
#include "engine/channelhandle.h"
#include "engine/enginevumeter.h"
#include "preferences/usersettings.h"
class ControlObject;
class EngineBuffer;
class EngineFilterBlock;
class ControlPushButton;
class EngineChannel : public EngineObject {
Q_OBJECT
public:
enum ChannelOrientation {
LEFT = 0,
CENTER,
RIGHT,
};
EngineChannel(const ChannelHandleAndGroup& handle_group,
ChannelOrientation defaultOrientation = CENTER,
EffectsManager* pEffectsManager = nullptr,
bool isTalkoverChannel = false);
virtual ~EngineChannel();
virtual ChannelOrientation getOrientation() const;
inline const ChannelHandle& getHandle() const {
return m_group.handle();
}
const QString& getGroup() const {
return m_group.name();
}
virtual bool isActive() = 0;
void setPfl(bool enabled);
virtual bool isPflEnabled() const;
void setMaster(bool enabled);
virtual bool isMasterEnabled() const;
void setTalkover(bool enabled);
virtual bool isTalkoverEnabled() const;
inline bool isTalkoverChannel() { return m_bIsTalkoverChannel; };
virtual void process(CSAMPLE* pOut, const int iBufferSize) = 0;
virtual void collectFeatures(GroupFeatureState* pGroupFeatures) const = 0;
virtual void postProcess(const int iBuffersize) = 0;
// TODO(XXX) This hack needs to be removed.
virtual EngineBuffer* getEngineBuffer() {
return NULL;
}
protected:
const ChannelHandleAndGroup m_group;
EffectsManager* m_pEffectsManager;
EngineVuMeter m_vuMeter;
ControlProxy* m_pSampleRate;
const CSAMPLE* volatile m_sampleBuffer;
private slots:
void slotOrientationLeft(double v);
void slotOrientationRight(double v);
void slotOrientationCenter(double v);
private:
ControlPushButton* m_pMaster;
ControlPushButton* m_pPFL;
ControlPushButton* m_pOrientation;
ControlPushButton* m_pOrientationLeft;
ControlPushButton* m_pOrientationRight;
ControlPushButton* m_pOrientationCenter;
ControlPushButton* m_pTalkover;
bool m_bIsTalkoverChannel;
};
#endif
|