comparison plugin/DSSIPluginInstance.h @ 1040:a1cd5abcb38b cxx11

Introduce and use a samplerate type
author Chris Cannam
date Wed, 04 Mar 2015 12:01:04 +0000
parents cc27f35aa75c
children 48e9f538e6e9
comparison
equal deleted inserted replaced
1039:b14064bd1f97 1040:a1cd5abcb38b
52 virtual std::string getDescription() const; 52 virtual std::string getDescription() const;
53 virtual std::string getMaker() const; 53 virtual std::string getMaker() const;
54 virtual int getPluginVersion() const; 54 virtual int getPluginVersion() const;
55 virtual std::string getCopyright() const; 55 virtual std::string getCopyright() const;
56 56
57 virtual void run(const Vamp::RealTime &, size_t count = 0); 57 virtual void run(const RealTime &, int count = 0);
58 58
59 virtual int getParameterCount() const; 59 virtual int getParameterCount() const;
60 virtual void setParameterValue(int parameter, float value); 60 virtual void setParameterValue(int parameter, float value);
61 virtual float getParameterValue(int parameter) const; 61 virtual float getParameterValue(int parameter) const;
62 virtual float getParameterDefault(int parameter) const; 62 virtual float getParameterDefault(int parameter) const;
65 virtual ParameterList getParameterDescriptors() const; 65 virtual ParameterList getParameterDescriptors() const;
66 virtual float getParameter(std::string) const; 66 virtual float getParameter(std::string) const;
67 virtual void setParameter(std::string, float); 67 virtual void setParameter(std::string, float);
68 68
69 virtual std::string configure(std::string key, std::string value); 69 virtual std::string configure(std::string key, std::string value);
70 virtual void sendEvent(const Vamp::RealTime &eventTime, 70 virtual void sendEvent(const RealTime &eventTime,
71 const void *event); 71 const void *event);
72 virtual void clearEvents(); 72 virtual void clearEvents();
73 73
74 virtual size_t getBufferSize() const { return m_blockSize; } 74 virtual int getBufferSize() const { return m_blockSize; }
75 virtual size_t getAudioInputCount() const { return m_audioPortsIn.size(); } 75 virtual int getAudioInputCount() const { return (int)m_audioPortsIn.size(); }
76 virtual size_t getAudioOutputCount() const { return m_idealChannelCount; } 76 virtual int getAudioOutputCount() const { return m_idealChannelCount; }
77 virtual sample_t **getAudioInputBuffers() { return m_inputBuffers; } 77 virtual sample_t **getAudioInputBuffers() { return m_inputBuffers; }
78 virtual sample_t **getAudioOutputBuffers() { return m_outputBuffers; } 78 virtual sample_t **getAudioOutputBuffers() { return m_outputBuffers; }
79 79
80 virtual size_t getControlOutputCount() const { return m_controlPortsOut.size(); } 80 virtual int getControlOutputCount() const { return (int)m_controlPortsOut.size(); }
81 virtual float getControlOutputValue(size_t n) const; 81 virtual float getControlOutputValue(int n) const;
82 82
83 virtual ProgramList getPrograms() const; 83 virtual ProgramList getPrograms() const;
84 virtual std::string getCurrentProgram() const; 84 virtual std::string getCurrentProgram() const;
85 virtual std::string getProgram(int bank, int program) const; 85 virtual std::string getProgram(int bank, int program) const;
86 virtual int getProgram(std::string name) const; 86 virtual int getProgram(std::string name) const;
87 virtual void selectProgram(std::string program); 87 virtual void selectProgram(std::string program);
88 88
89 virtual bool isBypassed() const { return m_bypassed; } 89 virtual bool isBypassed() const { return m_bypassed; }
90 virtual void setBypassed(bool bypassed) { m_bypassed = bypassed; } 90 virtual void setBypassed(bool bypassed) { m_bypassed = bypassed; }
91 91
92 virtual size_t getLatency(); 92 virtual sv_frame_t getLatency();
93 93
94 virtual void silence(); 94 virtual void silence();
95 virtual void discardEvents(); 95 virtual void discardEvents();
96 virtual void setIdealChannelCount(size_t channels); // may re-instantiate 96 virtual void setIdealChannelCount(int channels); // may re-instantiate
97 97
98 virtual bool isInGroup() const { return m_grouped; } 98 virtual bool isInGroup() const { return m_grouped; }
99 virtual void detachFromGroup(); 99 virtual void detachFromGroup();
100 100
101 virtual std::string getType() const { return "DSSI Real-Time Plugin"; } 101 virtual std::string getType() const { return "DSSI Real-Time Plugin"; }
108 // 108 //
109 DSSIPluginInstance(RealTimePluginFactory *factory, 109 DSSIPluginInstance(RealTimePluginFactory *factory,
110 int client, 110 int client,
111 QString identifier, 111 QString identifier,
112 int position, 112 int position,
113 int sampleRate, 113 sv_samplerate_t sampleRate,
114 size_t blockSize, 114 int blockSize,
115 int idealChannelCount, 115 int idealChannelCount,
116 const DSSI_Descriptor* descriptor); 116 const DSSI_Descriptor* descriptor);
117 117
118 void init(); 118 void init();
119 void instantiate(int sampleRate); 119 void instantiate(sv_samplerate_t sampleRate);
120 void cleanup(); 120 void cleanup();
121 void activate(); 121 void activate();
122 void deactivate(); 122 void deactivate();
123 void connectPorts(); 123 void connectPorts();
124 124
126 void setPortValueFromController(int portNumber, int controlValue); 126 void setPortValueFromController(int portNumber, int controlValue);
127 void selectProgramAux(std::string program, bool backupPortValues); 127 void selectProgramAux(std::string program, bool backupPortValues);
128 void checkProgramCache() const; 128 void checkProgramCache() const;
129 129
130 void initialiseGroupMembership(); 130 void initialiseGroupMembership();
131 void runGrouped(const Vamp::RealTime &); 131 void runGrouped(const RealTime &);
132 132
133 // For use in DSSIPluginFactory (set in the DSSI_Host_Descriptor): 133 // For use in DSSIPluginFactory (set in the DSSI_Host_Descriptor):
134 static int requestMidiSend(LADSPA_Handle instance, 134 static int requestMidiSend(LADSPA_Handle instance,
135 unsigned char ports, 135 unsigned char ports,
136 unsigned char channels); 136 unsigned char channels);
170 mutable std::vector<ProgramDescriptor> m_cachedPrograms; 170 mutable std::vector<ProgramDescriptor> m_cachedPrograms;
171 mutable bool m_programCacheValid; 171 mutable bool m_programCacheValid;
172 172
173 RingBuffer<snd_seq_event_t> m_eventBuffer; 173 RingBuffer<snd_seq_event_t> m_eventBuffer;
174 174
175 size_t m_blockSize; 175 int m_blockSize;
176 sample_t **m_inputBuffers; 176 sample_t **m_inputBuffers;
177 sample_t **m_outputBuffers; 177 sample_t **m_outputBuffers;
178 bool m_ownBuffers; 178 bool m_ownBuffers;
179 size_t m_idealChannelCount; 179 int m_idealChannelCount;
180 size_t m_outputBufferCount; 180 int m_outputBufferCount;
181 size_t m_sampleRate; 181 sv_samplerate_t m_sampleRate;
182 float *m_latencyPort; 182 float *m_latencyPort;
183 bool m_run; 183 bool m_run;
184 184
185 bool m_bypassed; 185 bool m_bypassed;
186 std::string m_program; 186 std::string m_program;
187 bool m_grouped; 187 bool m_grouped;
188 Vamp::RealTime m_lastRunTime; 188 RealTime m_lastRunTime;
189 189
190 Vamp::RealTime m_lastEventSendTime; 190 RealTime m_lastEventSendTime;
191 bool m_haveLastEventSendTime; 191 bool m_haveLastEventSendTime;
192 192
193 QMutex m_processLock; 193 QMutex m_processLock;
194 194
195 typedef std::set<DSSIPluginInstance *> PluginSet; 195 typedef std::set<DSSIPluginInstance *> PluginSet;