git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2696 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -26,7 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackThreadedDriver.h" | |||
#include "JackWaitThreadedDriver.h" | |||
#include "JackException.h" | |||
#include "JackExports.h" | |||
#define DEFAULT_MULTICAST_IP "225.3.19.154" | |||
#define DEFAULT_PORT 19000 | |||
@@ -314,9 +313,9 @@ namespace Jack | |||
} | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetAlias ( alias ); | |||
port->SetLatency ( fEngineControl->fBufferSize + fCaptureLatency ); | |||
port->SetLatency ( fEngineControl->fBufferSize ); | |||
fCapturePortList[audio_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fCapturePortList[%d] audio_port_index = %ld", audio_port_index, port_id ); | |||
jack_log ( "JackNetDriver::AllocPorts() fCapturePortList[%d] audio_port_index = %ld fPortLatency = %ld", audio_port_index, port_id, port->GetLatency() ); | |||
} | |||
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; | |||
for ( audio_port_index = 0; audio_port_index < fPlaybackChannels; audio_port_index++ ) | |||
@@ -331,9 +330,9 @@ namespace Jack | |||
} | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetAlias ( alias ); | |||
port->SetLatency ( fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) + fPlaybackLatency ); | |||
port->SetLatency ( fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) ); | |||
fPlaybackPortList[audio_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fPlaybackPortList[%d] audio_port_index = %ld", audio_port_index, port_id ); | |||
jack_log ( "JackNetDriver::AllocPorts() fPlaybackPortList[%d] audio_port_index = %ld fPortLatency = %ld", audio_port_index, port_id, port->GetLatency() ); | |||
} | |||
//midi | |||
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal; | |||
@@ -347,8 +346,10 @@ namespace Jack | |||
jack_error ( "driver: cannot register port for %s", name ); | |||
return -1; | |||
} | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetLatency ( fEngineControl->fBufferSize ); | |||
fMidiCapturePortList[midi_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiCapturePortList[%d] midi_port_index = %ld", midi_port_index, port_id ); | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiCapturePortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_id, port->GetLatency() ); | |||
} | |||
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; | |||
@@ -362,8 +363,10 @@ namespace Jack | |||
jack_error ( "driver: cannot register port for %s", name ); | |||
return -1; | |||
} | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetLatency ( fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) ); | |||
fMidiPlaybackPortList[midi_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld", midi_port_index, port_id ); | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld fPortLatency = %ld", midi_port_index, port_id, port->GetLatency() ); | |||
} | |||
return 0; | |||
@@ -23,6 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackAudioDriver.h" | |||
#include "JackNetTool.h" | |||
#include "transport_types.h" | |||
namespace Jack | |||
{ | |||
@@ -21,7 +21,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackError.h" | |||
#include "JackExports.h" | |||
#include "driver_interface.h" | |||
//#include "JackInternalClient.h" | |||
#define DEFAULT_MULTICAST_IP "225.3.19.154" | |||
#define DEFAULT_PORT 19000 | |||
@@ -189,31 +188,41 @@ namespace Jack | |||
//port registering | |||
uint i; | |||
char name[24]; | |||
jack_nframes_t port_latency = jack_get_buffer_size ( fJackClient ); | |||
unsigned long port_flags; | |||
//audio | |||
port_flags = JackPortIsInput | JackPortIsTerminal; | |||
for ( i = 0; i < fParams.fSendAudioChannels; i++ ) | |||
{ | |||
sprintf ( name, "to_slave_%d", i+1 ); | |||
if ( ( fAudioCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0 ) ) == NULL ) | |||
if ( ( fAudioCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0 ) ) == NULL ) | |||
goto fail; | |||
jack_port_set_latency ( fAudioCapturePorts[i], port_latency ); | |||
} | |||
port_flags = JackPortIsOutput | JackPortIsTerminal; | |||
for ( i = 0; i < fParams.fReturnAudioChannels; i++ ) | |||
{ | |||
sprintf ( name, "from_slave_%d", i+1 ); | |||
if ( ( fAudioPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0 ) ) == NULL ) | |||
if ( ( fAudioPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_AUDIO_TYPE, port_flags, 0 ) ) == NULL ) | |||
goto fail; | |||
jack_port_set_latency ( fAudioPlaybackPorts[i], port_latency ); | |||
} | |||
//midi | |||
port_flags = JackPortIsInput | JackPortIsTerminal; | |||
for ( i = 0; i < fParams.fSendMidiChannels; i++ ) | |||
{ | |||
sprintf ( name, "midi_to_slave_%d", i+1 ); | |||
if ( ( fMidiCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0 ) ) == NULL ) | |||
if ( ( fMidiCapturePorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, port_flags, 0 ) ) == NULL ) | |||
goto fail; | |||
jack_port_set_latency ( fMidiCapturePorts[i], port_latency ); | |||
} | |||
port_flags = JackPortIsOutput | JackPortIsTerminal; | |||
for ( i = 0; i < fParams.fReturnMidiChannels; i++ ) | |||
{ | |||
sprintf ( name, "midi_from_slave_%d", i+1 ); | |||
if ( ( fMidiPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0 ) ) == NULL ) | |||
if ( ( fMidiPlaybackPorts[i] = jack_port_register ( fJackClient, name, JACK_DEFAULT_MIDI_TYPE, port_flags, 0 ) ) == NULL ) | |||
goto fail; | |||
jack_port_set_latency ( fMidiPlaybackPorts[i], port_latency ); | |||
} | |||
fRunning = true; | |||
@@ -463,6 +472,12 @@ fail: | |||
} | |||
} | |||
jack_set_sync_callback ( fManagerClient, SetSyncCallback, this ); | |||
//activate the client | |||
if ( jack_activate ( fManagerClient ) != 0 ) | |||
jack_error ( "Can't activate the network manager client, transport disables." ); | |||
//launch the manager thread | |||
if ( jack_client_create_thread ( fManagerClient, &fManagerThread, 0, 0, NetManagerThread, this ) ) | |||
jack_error ( "Can't create the network manager control thread." ); | |||
@@ -479,6 +494,13 @@ fail: | |||
SocketAPIEnd(); | |||
} | |||
int JackNetMasterManager::SetSyncCallback ( jack_transport_state_t state, jack_position_t* pos, void* arg ) | |||
{ | |||
JackNetMasterManager* master_manager = static_cast<JackNetMasterManager*>(arg); | |||
master_manager->SyncCallback ( state, pos ); | |||
return 1; | |||
} | |||
void* JackNetMasterManager::NetManagerThread ( void* arg ) | |||
{ | |||
JackNetMasterManager* master_manager = static_cast<JackNetMasterManager*> ( arg ); | |||
@@ -488,6 +510,12 @@ fail: | |||
return NULL; | |||
} | |||
int JackNetMasterManager::SyncCallback ( jack_transport_state_t state, jack_position_t* pos ) | |||
{ | |||
jack_log ( "JackNetMasterManager::SyncCallback" ); | |||
return 0; | |||
} | |||
void JackNetMasterManager::Run() | |||
{ | |||
jack_log ( "JackNetMasterManager::Run" ); | |||
@@ -17,8 +17,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JACKNETMASTER_H__ | |||
#define __JACKNETMASTER_H__ | |||
#ifndef __JACKNETMANAGER_H__ | |||
#define __JACKNETMANAGER_H__ | |||
#include "JackNetTool.h" | |||
#include "thread.h" | |||
@@ -86,8 +86,8 @@ namespace Jack | |||
{ | |||
friend class JackNetMaster; | |||
private: | |||
static int SetSyncCallback ( jack_transport_state_t state, jack_position_t* pos, void* arg ); | |||
static void* NetManagerThread ( void* arg ); | |||
static int SetProcess ( jack_nframes_t nframes, void* arg ); | |||
jack_client_t* fManagerClient; | |||
const char* fManagerName; | |||
@@ -103,7 +103,8 @@ namespace Jack | |||
master_list_it_t FindMaster ( uint32_t client_id ); | |||
void KillMaster ( session_params_t* params ); | |||
void SetSlaveName ( session_params_t& params ); | |||
int Process(); | |||
int SyncCallback ( jack_transport_state_t state, jack_position_t* pos ); | |||
public: | |||
JackNetMasterManager ( jack_client_t* jack_client, const JSList* params ); | |||
~JackNetMasterManager(); | |||
@@ -17,7 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "types.h" | |||
#include "JackConstants.h" | |||
#include "JackMidiPort.h" | |||
#include "JackExports.h" | |||
@@ -119,7 +118,7 @@ namespace Jack | |||
char* fBuffer; | |||
char* fNetBuffer; | |||
JackMidiBuffer** fPortBuffer; | |||
public: | |||
NetMidiBuffer ( session_params_t* params, uint32_t nports, char* net_buffer ); | |||
~NetMidiBuffer(); | |||
@@ -134,7 +133,7 @@ namespace Jack | |||
//network<->buffer | |||
int RenderFromNetwork ( int subcycle, size_t copy_size ); | |||
int RenderToNetwork ( int subcycle, size_t total_size ); | |||
void SetBuffer(int index, JackMidiBuffer* buffer); | |||
}; | |||
@@ -157,7 +156,7 @@ namespace Jack | |||
//jack<->buffer | |||
void RenderFromJackPorts ( int subcycle ); | |||
void RenderToJackPorts ( int subcycle ); | |||
void SetBuffer(int index, sample_t* buffer); | |||
}; | |||
@@ -33,7 +33,7 @@ | |||
<dlgsavepath> 1</> | |||
<dlgautoprog> 1</> | |||
<dlgfinish> 1</> | |||
<comptype> ppmdmax</> | |||
<comptype> deffast</> | |||
<solid> 1</> | |||
<srcfolder> </> | |||
<ifexist> over</> | |||