From ef3a90f4ba8d65e8c210898c48acd3a07eafaf4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gl=C3=B6ckner?= Date: Fri, 22 Jan 2016 11:59:00 +0100 Subject: added JackaudioOutputEngine --- drumgizmo/jackclient.h | 72 ++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 31 deletions(-) (limited to 'drumgizmo/jackclient.h') diff --git a/drumgizmo/jackclient.h b/drumgizmo/jackclient.h index f093220..ef7abf1 100644 --- a/drumgizmo/jackclient.h +++ b/drumgizmo/jackclient.h @@ -24,44 +24,54 @@ * along with DrumGizmo; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef __DRUMGIZMO_JACKCLIENT_H__ -#define __DRUMGIZMO_JACKCLIENT_H__ - -#include +#pragma once +#include +#include #include -class JackProcess { -public: - virtual ~JackProcess() {} - virtual void jack_process(jack_nframes_t nframes) = 0; -}; - -class JackClient { -public: - JackClient(); - ~JackClient(); - - void addJackProcess(JackProcess *process) - { - jack_processes.insert(process); - } +#include - void removeJackProcess(JackProcess *process); +#include - void activate(); - int process(jack_nframes_t nframes); +class JackClient; - jack_client_t *jack_client; +class JackProcess { + public: + virtual ~JackProcess(); + virtual void process(jack_nframes_t num_frames) = 0; +}; - // Sort of private... - int refcnt; +// -------------------------------------------------------------------- -private: - std::set jack_processes; - bool active; +struct JackChannel { + std::vector samples; + jack_client_t* const client; + jack_port_t* const port; + + JackChannel(); + JackChannel(JackClient& client, std::size_t buffer_size, + std::string const & name); + ~JackChannel(); }; -JackClient *init_jack_client(); -void close_jack_client(); +// -------------------------------------------------------------------- -#endif/*__DRUMGIZMO_JACKCLIENT_H__*/ +class JackClient { + friend struct JackChannel; + + public: + JackClient(); + ~JackClient(); + + void add(JackProcess& process); + void remove(JackProcess& process); + void activate(); + int process(jack_nframes_t num_frames); + std::size_t getBufferSize() const; + std::size_t getSampleRate() const; + + private: + jack_client_t* client; + std::set processes; + bool is_active; +}; -- cgit v1.2.3