git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2311 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -36,7 +36,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
JackAudioDriver::JackAudioDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table) | |||||
JackAudioDriver::JackAudioDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table) | |||||
: JackDriver(name, alias, engine, table), | : JackDriver(name, alias, engine, table), | ||||
fCaptureChannels(0), | fCaptureChannels(0), | ||||
fPlaybackChannels(0), | fPlaybackChannels(0), | ||||
@@ -57,7 +57,7 @@ class EXPORT JackAudioDriver : public JackDriver | |||||
public: | public: | ||||
JackAudioDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table); | |||||
JackAudioDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table); | |||||
virtual ~JackAudioDriver(); | virtual ~JackAudioDriver(); | ||||
virtual int Process(); | virtual int Process(); | ||||
@@ -39,7 +39,7 @@ using namespace std; | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
JackDriver::JackDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table) | |||||
JackDriver::JackDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table) | |||||
{ | { | ||||
assert(strlen(name) < JACK_CLIENT_NAME_SIZE); | assert(strlen(name) < JACK_CLIENT_NAME_SIZE); | ||||
fSynchroTable = table; | fSynchroTable = table; | ||||
@@ -29,7 +29,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
class JackEngine; | |||||
class JackEngineInterface; | |||||
class JackGraphManager; | class JackGraphManager; | ||||
class JackSynchro; | class JackSynchro; | ||||
struct JackEngineControl; | struct JackEngineControl; | ||||
@@ -150,7 +150,7 @@ class EXPORT JackDriver : public JackDriverClient | |||||
jack_nframes_t fPlaybackLatency; | jack_nframes_t fPlaybackLatency; | ||||
jack_time_t fLastWaitUst; | jack_time_t fLastWaitUst; | ||||
float fDelayedUsecs; | float fDelayedUsecs; | ||||
JackEngine* fEngine; | |||||
JackEngineInterface* fEngine; | |||||
JackGraphManager* fGraphManager; | JackGraphManager* fGraphManager; | ||||
JackSynchro** fSynchroTable; | JackSynchro** fSynchroTable; | ||||
JackEngineControl* fEngineControl; | JackEngineControl* fEngineControl; | ||||
@@ -160,7 +160,7 @@ class EXPORT JackDriver : public JackDriverClient | |||||
public: | public: | ||||
JackDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table); | |||||
JackDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table); | |||||
JackDriver(); | JackDriver(); | ||||
virtual ~JackDriver(); | virtual ~JackDriver(); | ||||
@@ -44,11 +44,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#endif | #endif | ||||
typedef jack_driver_desc_t * (*JackDriverDescFunction) (); | typedef jack_driver_desc_t * (*JackDriverDescFunction) (); | ||||
typedef Jack::JackDriverClientInterface* (*initialize) (Jack::JackEngine*, Jack::JackSynchro**, const JSList *); | |||||
typedef Jack::JackDriverClientInterface* (*initialize) (Jack::JackEngineInterface*, Jack::JackSynchro**, const JSList *); | |||||
typedef struct _jack_driver_info | typedef struct _jack_driver_info | ||||
{ | { | ||||
Jack::JackDriverClientInterface* (*initialize)(Jack::JackEngine*, Jack::JackSynchro**, const JSList *); | |||||
Jack::JackDriverClientInterface* (*initialize)(Jack::JackEngineInterface*, Jack::JackSynchro**, const JSList *); | |||||
DRIVER_HANDLE handle; | DRIVER_HANDLE handle; | ||||
} | } | ||||
jack_driver_info_t; | jack_driver_info_t; | ||||
@@ -134,7 +134,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
jack_nframes_t sample_rate = 48000; | jack_nframes_t sample_rate = 48000; | ||||
jack_nframes_t period_size = 1024; | jack_nframes_t period_size = 1024; | ||||
unsigned int capture_ports = 2; | unsigned int capture_ports = 2; | ||||
@@ -38,7 +38,7 @@ class JackDummyDriver : public JackAudioDriver | |||||
public: | public: | ||||
JackDummyDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table, unsigned long wait_time) | |||||
JackDummyDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table, unsigned long wait_time) | |||||
: JackAudioDriver(name, alias, engine, table), fWaitTime(wait_time) | : JackAudioDriver(name, alias, engine, table), fWaitTime(wait_time) | ||||
{} | {} | ||||
virtual ~JackDummyDriver() | virtual ~JackDummyDriver() | ||||
@@ -53,6 +53,7 @@ JackEngine::JackEngine(JackGraphManager* manager, | |||||
JackEngine::~JackEngine() | JackEngine::~JackEngine() | ||||
{ | { | ||||
jack_log("JackEngine::~JackEngine"); | |||||
delete fChannel; | delete fChannel; | ||||
delete fSignal; | delete fSignal; | ||||
} | } | ||||
@@ -33,12 +33,68 @@ struct JackEngineControl; | |||||
class JackServerNotifyChannelInterface; | class JackServerNotifyChannelInterface; | ||||
class JackExternalClient; | class JackExternalClient; | ||||
class JackSyncInterface; | class JackSyncInterface; | ||||
class JackEngineInterface | |||||
{ | |||||
public: | |||||
JackEngineInterface() | |||||
{} | |||||
JackEngineInterface(JackGraphManager* manager, JackSynchro** table, JackEngineControl* controler) | |||||
{} | |||||
virtual ~JackEngineInterface() | |||||
{} | |||||
virtual int Open() = 0; | |||||
virtual int Close() = 0; | |||||
// Client management | |||||
virtual int ClientCheck(const char* name, char* name_res, int protocol, int options, int* status) = 0; | |||||
virtual int ClientExternalOpen(const char* name, int pid, int* ref, int* shared_engine, int* shared_client, int* shared_graph_manager) = 0; | |||||
virtual int ClientInternalOpen(const char* name, int* ref, JackEngineControl** shared_engine, JackGraphManager** shared_manager, JackClientInterface* client, bool wait) = 0; | |||||
virtual int ClientExternalClose(int refnum) = 0; | |||||
virtual int ClientInternalClose(int refnum, bool wait) = 0; | |||||
virtual int ClientActivate(int refnum, bool state) = 0; | |||||
virtual int ClientDeactivate(int refnum) = 0; | |||||
virtual int GetClientPID(const char* name) = 0; | |||||
// Internal client management | |||||
virtual int GetInternalClientName(int int_ref, char* name_res) = 0; | |||||
virtual int InternalClientHandle(const char* client_name, int* status, int* int_ref) = 0; | |||||
virtual int InternalClientUnload(int refnum, int* status) = 0; | |||||
// Port management | |||||
virtual int PortRegister(int refnum, const char* name, const char *type, unsigned int flags, unsigned int buffer_size, unsigned int* port) = 0; | |||||
virtual int PortUnRegister(int refnum, jack_port_id_t port) = 0; | |||||
virtual int PortConnect(int refnum, const char* src, const char* dst) = 0; | |||||
virtual int PortDisconnect(int refnum, const char* src, const char* dst) = 0; | |||||
virtual int PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst) = 0; | |||||
virtual int PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst) = 0; | |||||
// Graph | |||||
virtual bool Process(jack_time_t callback_usecs) = 0; | |||||
// Notifications | |||||
virtual void NotifyXRun(jack_time_t callback_usecs, float delayed_usecs) = 0; | |||||
virtual void NotifyXRun(int refnum) = 0; | |||||
virtual void NotifyGraphReorder() = 0; | |||||
virtual void NotifyBufferSize(jack_nframes_t nframes) = 0; | |||||
virtual void NotifyFreewheel(bool onoff) = 0; | |||||
virtual void NotifyPortRegistation(jack_port_id_t port_index, bool onoff) = 0; | |||||
virtual void NotifyPortConnect(jack_port_id_t src, jack_port_id_t dst, bool onoff) = 0; | |||||
virtual void NotifyActivate(int refnum) = 0; | |||||
}; | |||||
/*! | /*! | ||||
\brief Engine description. | \brief Engine description. | ||||
*/ | */ | ||||
class JackEngine | |||||
class JackEngine : public JackEngineInterface | |||||
{ | { | ||||
private: | private: | ||||
@@ -35,7 +35,7 @@ class JackFreewheelDriver : public JackDriver | |||||
public: | public: | ||||
JackFreewheelDriver(JackEngine* engine, JackSynchro** table): JackDriver("freewheel", "", engine, table) | |||||
JackFreewheelDriver(JackEngineInterface* engine, JackSynchro** table): JackDriver("freewheel", "", engine, table) | |||||
{} | {} | ||||
virtual ~JackFreewheelDriver() | virtual ~JackFreewheelDriver() | ||||
{} | {} | ||||
@@ -35,7 +35,7 @@ class JackInternalClientChannel : public JackClientChannelInterface | |||||
private: | private: | ||||
JackServer* fServer; | JackServer* fServer; | ||||
JackEngine* fEngine; | |||||
JackEngineInterface* fEngine; | |||||
public: | public: | ||||
@@ -30,7 +30,7 @@ namespace Jack | |||||
\brief Locked Engine. | \brief Locked Engine. | ||||
*/ | */ | ||||
class JackLockedEngine : public JackEngine, public JackLockAble | |||||
class JackLockedEngine : public JackEngineInterface, public JackLockAble | |||||
{ | { | ||||
private: | private: | ||||
@@ -35,7 +35,7 @@ class JackLoopbackDriver : public JackAudioDriver | |||||
public: | public: | ||||
JackLoopbackDriver(JackEngine* engine, JackSynchro** table) | |||||
JackLoopbackDriver(JackEngineInterface* engine, JackSynchro** table) | |||||
: JackAudioDriver("loopback", "", engine, table) | : JackAudioDriver("loopback", "", engine, table) | ||||
{} | {} | ||||
virtual ~JackLoopbackDriver() | virtual ~JackLoopbackDriver() | ||||
@@ -284,7 +284,7 @@ int JackServer::SetTimebaseCallback(int refnum, int conditional) | |||||
return fEngineControl->fTransport.SetTimebase(refnum, conditional); | return fEngineControl->fTransport.SetTimebase(refnum, conditional); | ||||
} | } | ||||
JackEngine* JackServer::GetEngine() | |||||
JackEngineInterface* JackServer::GetEngine() | |||||
{ | { | ||||
return fEngine; | return fEngine; | ||||
} | } | ||||
@@ -35,7 +35,7 @@ class JackDriverClientInterface; | |||||
class JackServerChannelInterface; | class JackServerChannelInterface; | ||||
class JackSyncInterface; | class JackSyncInterface; | ||||
struct JackEngineControl; | struct JackEngineControl; | ||||
class JackEngine; | |||||
class JackEngineInterface; | |||||
/*! | /*! | ||||
\brief The Jack server. | \brief The Jack server. | ||||
@@ -50,7 +50,7 @@ class EXPORT JackServer | |||||
JackDriverClientInterface* fAudioDriver; | JackDriverClientInterface* fAudioDriver; | ||||
JackDriverClientInterface* fFreewheelDriver; | JackDriverClientInterface* fFreewheelDriver; | ||||
JackDriverClientInterface* fLoopbackDriver; | JackDriverClientInterface* fLoopbackDriver; | ||||
JackEngine* fEngine; | |||||
JackEngineInterface* fEngine; | |||||
JackEngineControl* fEngineControl; | JackEngineControl* fEngineControl; | ||||
JackGraphManager* fGraphManager; | JackGraphManager* fGraphManager; | ||||
JackServerChannelInterface* fChannel; | JackServerChannelInterface* fChannel; | ||||
@@ -81,7 +81,7 @@ class EXPORT JackServer | |||||
int SetTimebaseCallback(int refnum, int conditional); | int SetTimebaseCallback(int refnum, int conditional); | ||||
// Object access | // Object access | ||||
JackEngine* GetEngine(); | |||||
JackEngineInterface* GetEngine(); | |||||
JackEngineControl* GetEngineControl(); | JackEngineControl* GetEngineControl(); | ||||
JackSynchro** GetSynchroTable(); | JackSynchro** GetSynchroTable(); | ||||
JackGraphManager* GetGraphManager(); | JackGraphManager* GetGraphManager(); | ||||
@@ -2597,7 +2597,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
jack_nframes_t srate = 48000; | jack_nframes_t srate = 48000; | ||||
jack_nframes_t frames_per_interrupt = 1024; | jack_nframes_t frames_per_interrupt = 1024; | ||||
unsigned long user_nperiods = 2; | unsigned long user_nperiods = 2; | ||||
@@ -915,7 +915,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
const JSList * node; | const JSList * node; | ||||
const jack_driver_param_t * param; | const jack_driver_param_t * param; | ||||
@@ -1039,7 +1039,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
unsigned int port = 0; | unsigned int port = 0; | ||||
unsigned int node_id = -1; | unsigned int node_id = -1; | ||||
int nbitems; | int nbitems; | ||||
@@ -419,7 +419,7 @@ OSStatus JackCoreAudioDriver::GetTotalChannels(AudioDeviceID device, int* channe | |||||
return err; | return err; | ||||
} | } | ||||
JackCoreAudioDriver::JackCoreAudioDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table) | |||||
JackCoreAudioDriver::JackCoreAudioDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table) | |||||
: JackAudioDriver(name, alias, engine, table), fJackInputData(NULL), fDriverOutputData(NULL), fState(false), fIOUsage(1.f) | : JackAudioDriver(name, alias, engine, table), fJackInputData(NULL), fDriverOutputData(NULL), fState(false), fIOUsage(1.f) | ||||
{} | {} | ||||
@@ -1243,7 +1243,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
jack_nframes_t srate = 44100; | jack_nframes_t srate = 44100; | ||||
jack_nframes_t frames_per_interrupt = 128; | jack_nframes_t frames_per_interrupt = 128; | ||||
int capture = FALSE; | int capture = FALSE; | ||||
@@ -143,7 +143,7 @@ class JackCoreAudioDriver : public JackAudioDriver | |||||
public: | public: | ||||
JackCoreAudioDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table); | |||||
JackCoreAudioDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table); | |||||
virtual ~JackCoreAudioDriver(); | virtual ~JackCoreAudioDriver(); | ||||
int Open(jack_nframes_t frames_per_cycle, | int Open(jack_nframes_t frames_per_cycle, | ||||
@@ -70,7 +70,7 @@ void JackMachServerChannel::Close() | |||||
fServerPort.DestroyPort(); | fServerPort.DestroyPort(); | ||||
} | } | ||||
JackEngine* JackMachServerChannel::GetEngine() | |||||
JackEngineInterface* JackMachServerChannel::GetEngine() | |||||
{ | { | ||||
return fServer->GetEngine(); | return fServer->GetEngine(); | ||||
} | } | ||||
@@ -29,7 +29,7 @@ namespace Jack | |||||
{ | { | ||||
class JackServer; | class JackServer; | ||||
class JackEngine; | |||||
class JackEngineInterface; | |||||
/*! | /*! | ||||
\brief JackServerChannel using Mach IPC. | \brief JackServerChannel using Mach IPC. | ||||
@@ -55,7 +55,7 @@ class JackMachServerChannel : public JackServerChannelInterface, public JackRunn | |||||
int Open(const char* server_name, JackServer* server); // Open the Server/Client connection | int Open(const char* server_name, JackServer* server); // Open the Server/Client connection | ||||
void Close(); // Close the Server/Client connection | void Close(); // Close the Server/Client connection | ||||
JackEngine* GetEngine(); | |||||
JackEngineInterface* GetEngine(); | |||||
JackServer* GetServer(); | JackServer* GetServer(); | ||||
void ClientCheck(char* name, char* name_res, int protocol, int options, int* status, int* result); | void ClientCheck(char* name, char* name_res, int protocol, int options, int* status, int* result); | ||||
@@ -568,7 +568,7 @@ extern "C" | |||||
return desc; | return desc; | ||||
} | } | ||||
EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngine* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackEngineInterface* engine, Jack::JackSynchro** table, const JSList* params) { | |||||
jack_nframes_t srate = 44100; | jack_nframes_t srate = 44100; | ||||
jack_nframes_t frames_per_interrupt = 512; | jack_nframes_t frames_per_interrupt = 512; | ||||
int capture = FALSE; | int capture = FALSE; | ||||
@@ -53,7 +53,7 @@ class JackPortAudioDriver : public JackAudioDriver | |||||
public: | public: | ||||
JackPortAudioDriver(const char* name, const char* alias, JackEngine* engine, JackSynchro** table) | |||||
JackPortAudioDriver(const char* name, const char* alias, JackEngineInterface* engine, JackSynchro** table) | |||||
: JackAudioDriver(name, alias, engine, table), fStream(NULL), fInputBuffer(NULL), fOutputBuffer(NULL), | : JackAudioDriver(name, alias, engine, table), fStream(NULL), fInputBuffer(NULL), fOutputBuffer(NULL), | ||||
fInputDevice(paNoDevice), fOutputDevice(paNoDevice) | fInputDevice(paNoDevice), fOutputDevice(paNoDevice) | ||||
{} | {} | ||||