diff --git a/common/JackAudioAdapterInterface.h b/common/JackAudioAdapterInterface.h index 080d4596..a661598f 100644 --- a/common/JackAudioAdapterInterface.h +++ b/common/JackAudioAdapterInterface.h @@ -212,13 +212,13 @@ namespace Jack int GetInputs() { - jack_log ( "JackAudioAdapterInterface::GetInputs %d", fCaptureChannels ); + //jack_log("JackAudioAdapterInterface::GetInputs %d", fCaptureChannels); return fCaptureChannels; } int GetOutputs() { - jack_log ( "JackAudioAdapterInterface::GetOutputs %d", fPlaybackChannels ); + //jack_log ("JackAudioAdapterInterface::GetOutputs %d", fPlaybackChannels); return fPlaybackChannels; } diff --git a/common/JackNetAPI.cpp b/common/JackNetAPI.cpp index d895f3ca..bc25d421 100644 --- a/common/JackNetAPI.cpp +++ b/common/JackNetAPI.cpp @@ -214,6 +214,7 @@ struct JackNetExtMaster : public JackNetMasterInterface { fprintf(stderr, "Can't init new net master...\n"); goto error; } + jack_info ( "Waiting for a slave..." ); break; case KILL_MASTER: @@ -787,7 +788,7 @@ struct JackNetAdapter : public JackAudioAdapterInterface { Destroy(); } - int Flush() + void Flush() { for (int i = 0; i < fCaptureChannels; i++ ) { fCaptureRingBuffer[i]->Reset(fRingbufferCurSize); @@ -881,14 +882,14 @@ SERVER_EXPORT int jack_net_master_close(jack_net_master_t* net) } SERVER_EXPORT int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer) { - JackNetExtMaster* slave = (JackNetExtMaster*)net; - return slave->Read(audio_input, audio_input_buffer, midi_input, midi_input_buffer); + JackNetExtMaster* master = (JackNetExtMaster*)net; + return master->Read(audio_input, audio_input_buffer, midi_input, midi_input_buffer); } SERVER_EXPORT int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer) { - JackNetExtMaster* slave = (JackNetExtMaster*)net; - return slave->Write(audio_output, audio_output_buffer, midi_output, midi_output_buffer); + JackNetExtMaster* master = (JackNetExtMaster*)net; + return master->Write(audio_output, audio_output_buffer, midi_output, midi_output_buffer); } // Adapter API diff --git a/common/JackNetAdapter.cpp b/common/JackNetAdapter.cpp index 8eff6900..b44ba331 100644 --- a/common/JackNetAdapter.cpp +++ b/common/JackNetAdapter.cpp @@ -117,18 +117,18 @@ namespace Jack JackNetAdapter::~JackNetAdapter() { - jack_log ( "JackNetAdapter::~JackNetAdapter" ); + jack_log ("JackNetAdapter::~JackNetAdapter"); int port_index; - if ( fSoftCaptureBuffer ) + if (fSoftCaptureBuffer) { - for ( port_index = 0; port_index < fCaptureChannels; port_index++ ) + for (port_index = 0; port_index < fCaptureChannels; port_index++) delete[] fSoftCaptureBuffer[port_index]; delete[] fSoftCaptureBuffer; } - if ( fSoftPlaybackBuffer ) + if (fSoftPlaybackBuffer) { - for ( port_index = 0; port_index < fPlaybackChannels; port_index++ ) + for ( port_index = 0; port_index < fPlaybackChannels; port_index++) delete[] fSoftPlaybackBuffer[port_index]; delete[] fSoftPlaybackBuffer; } @@ -194,6 +194,8 @@ namespace Jack } //thread------------------------------------------------------------------------------ + // TODO : if failure, thread exist... need to restart ? + bool JackNetAdapter::Init() { jack_log ( "JackNetAdapter::Init" ); @@ -201,11 +203,16 @@ namespace Jack int port_index; //init network connection - if ( !JackNetSlaveInterface::Init() ) + if (!JackNetSlaveInterface::Init()) { + jack_error("JackNetSlaveInterface::Init() error..." ); return false; + } //then set global parameters - SetParams(); + if (!SetParams()) { + jack_error("SetParams error..." ); + return false; + } //set buffers fSoftCaptureBuffer = new sample_t*[fCaptureChannels]; diff --git a/common/JackNetDriver.cpp b/common/JackNetDriver.cpp index 477acb28..5f36c3f9 100644 --- a/common/JackNetDriver.cpp +++ b/common/JackNetDriver.cpp @@ -142,13 +142,17 @@ namespace Jack ( fParams.fSlaveSyncMode ) ? "sync" : "async", ( fParams.fTransportSync ) ? "with" : "without" ); //init network - if (!JackNetSlaveInterface::Init()) + if (!JackNetSlaveInterface::Init()) { + jack_error("JackNetSlaveInterface::Init() error..." ); return false; + } //set global parameters - if (!SetParams()) + if (!SetParams()) { + jack_error("SetParams error..." ); return false; - + } + //allocate midi ports lists fMidiCapturePortList = new jack_port_id_t [fParams.fSendMidiChannels]; fMidiPlaybackPortList = new jack_port_id_t [fParams.fReturnMidiChannels]; diff --git a/common/JackNetInterface.cpp b/common/JackNetInterface.cpp index 0e7a9f45..9dc6b583 100644 --- a/common/JackNetInterface.cpp +++ b/common/JackNetInterface.cpp @@ -67,9 +67,21 @@ namespace Jack memset(&fReturnTransportData, 0, sizeof(net_transport_data_t)); } + void JackNetInterface::FreeNetworkBuffers() + { + delete fNetMidiCaptureBuffer; + delete fNetMidiPlaybackBuffer; + delete fNetAudioCaptureBuffer; + delete fNetAudioPlaybackBuffer; + fNetMidiCaptureBuffer = NULL; + fNetMidiPlaybackBuffer = NULL; + fNetAudioCaptureBuffer = NULL; + fNetAudioPlaybackBuffer = NULL; + } + JackNetInterface::~JackNetInterface() { - jack_log ( "JackNetInterface::~JackNetInterface" ); + jack_log ("JackNetInterface::~JackNetInterface"); fSocket.Close(); delete[] fTxBuffer; @@ -270,11 +282,7 @@ namespace Jack return true; error: - - delete fNetMidiCaptureBuffer; - delete fNetMidiPlaybackBuffer; - delete fNetAudioCaptureBuffer; - delete fNetAudioPlaybackBuffer; + FreeNetworkBuffers(); return false; } @@ -650,7 +658,7 @@ namespace Jack return true; } - net_status_t JackNetSlaveInterface::SendAvailableToMaster(int count) + net_status_t JackNetSlaveInterface::SendAvailableToMaster(long try_count) { jack_log ( "JackNetSlaveInterface::SendAvailableToMaster()" ); //utility @@ -698,10 +706,11 @@ namespace Jack return NET_RECV_ERROR; } } - while (strcmp(host_params.fPacketType, fParams.fPacketType) && (GetPacketType(&host_params) != SLAVE_SETUP) && (--count > 0)); + while (strcmp(host_params.fPacketType, fParams.fPacketType) && (GetPacketType(&host_params) != SLAVE_SETUP) && (--try_count > 0)); // Time out failure.. - if (count == 0) { + if (try_count == 0) { + jack_error("Time out error in connect"); return NET_CONNECT_ERROR; } @@ -710,8 +719,8 @@ namespace Jack fParams = host_params; //connect the socket - if ( fSocket.Connect() == SOCKET_ERROR ) { - jack_error ( "Error in connect : %s", StrError ( NET_ERROR_CODE ) ); + if (fSocket.Connect() == SOCKET_ERROR) { + jack_error("Error in connect : %s", StrError(NET_ERROR_CODE)); return NET_CONNECT_ERROR; } return NET_CONNECTED; @@ -719,17 +728,17 @@ namespace Jack net_status_t JackNetSlaveInterface::SendStartToMaster() { - jack_log ( "JackNetSlaveInterface::SendStartToMaster" ); + jack_log("JackNetSlaveInterface::SendStartToMaster"); //tell the master to start session_params_t net_params; memset(&net_params, 0, sizeof ( session_params_t )); SetPacketType ( &fParams, START_MASTER ); SessionParamsHToN(&fParams, &net_params); - if ( fSocket.Send ( &net_params, sizeof ( session_params_t ), 0 ) == SOCKET_ERROR ) + if (fSocket.Send(&net_params, sizeof(session_params_t), 0) == SOCKET_ERROR) { - jack_error ( "Error in send : %s", StrError ( NET_ERROR_CODE ) ); - return ( fSocket.GetError() == NET_CONN_ERROR ) ? NET_ERROR : NET_SEND_ERROR; + jack_error("Error in send : %s", StrError(NET_ERROR_CODE)); + return (fSocket.GetError() == NET_CONN_ERROR) ? NET_ERROR : NET_SEND_ERROR; } return NET_ROLLING; } @@ -784,10 +793,7 @@ namespace Jack return true; error: - delete fNetMidiCaptureBuffer; - delete fNetMidiPlaybackBuffer; - delete fNetAudioCaptureBuffer; - delete fNetAudioPlaybackBuffer; + FreeNetworkBuffers(); return false; } diff --git a/common/JackNetInterface.h b/common/JackNetInterface.h index 3a562d49..8e3aab93 100644 --- a/common/JackNetInterface.h +++ b/common/JackNetInterface.h @@ -63,6 +63,7 @@ namespace Jack //utility methods int SetNetBufferSize(); + void FreeNetworkBuffers(); //virtual methods : depends on the sub class master/slave virtual bool SetParams(); @@ -148,7 +149,7 @@ namespace Jack bool InitConnection(int time_out); bool InitRendering(); - net_status_t SendAvailableToMaster(int count = LONG_MAX); + net_status_t SendAvailableToMaster(long count = LONG_MAX); // long here (and not int...) net_status_t SendStartToMaster(); bool SetParams(); diff --git a/common/JackNetManager.cpp b/common/JackNetManager.cpp index b41559c4..d0961935 100644 --- a/common/JackNetManager.cpp +++ b/common/JackNetManager.cpp @@ -113,12 +113,16 @@ namespace Jack bool JackNetMaster::Init(bool auto_connect) { //network init - if (!JackNetMasterInterface::Init()) + if (!JackNetMasterInterface::Init()){ + jack_error("JackNetMasterInterface::Init() error..." ); return false; + } //set global parameters - if (!SetParams()) + if (!SetParams()) { + jack_error("SetParams error..." ); return false; + } //jack client and process jack_status_t status; diff --git a/common/JackNetTool.cpp b/common/JackNetTool.cpp index def43d6e..d4e3fba3 100644 --- a/common/JackNetTool.cpp +++ b/common/JackNetTool.cpp @@ -49,7 +49,6 @@ HardwareClock::HardwareClock() mach_timebase_info_data_t info; mach_timebase_info(&info); m_clockToSeconds = (double)info.numer/info.denom/1000000000.0; - Reset(); } @@ -57,7 +56,6 @@ void HardwareClock::Reset() { m_startAbsTime = mach_absolute_time(); m_lastAbsTime = m_startAbsTime; - m_time = m_startAbsTime*m_clockToSeconds; m_deltaTime = 1.0f/60.0f; } @@ -69,7 +67,6 @@ void HardwareClock::Update() m_time = currentTime*m_clockToSeconds; m_deltaTime = (double)dt*m_clockToSeconds; - m_lastAbsTime = currentTime; } @@ -200,8 +197,8 @@ namespace Jack int NetMidiBuffer::RenderToNetwork ( int subcycle, size_t total_size ) { int size = total_size - subcycle * fMaxPcktSize; - int copy_size = ( size <= fMaxPcktSize ) ? size : fMaxPcktSize; - memcpy ( fNetBuffer, fBuffer + subcycle * fMaxPcktSize, copy_size ); + int copy_size = (size <= fMaxPcktSize) ? size : fMaxPcktSize; + memcpy(fNetBuffer, fBuffer + subcycle * fMaxPcktSize, copy_size); return copy_size; } @@ -414,12 +411,9 @@ namespace Jack return 0; } - HardwareClock clock; - //network<->buffer + //network<->buffer int NetCeltAudioBuffer::RenderFromNetwork(int cycle, int subcycle, size_t copy_size) { - //clock.Update(); - if (subcycle == fNumPackets - 1) { for (int port_index = 0; port_index < fNPorts; port_index++) memcpy(fCompressedBuffer[port_index] + subcycle * fSubPeriodBytesSize, fNetBuffer + port_index * fLastSubPeriodBytesSize, fLastSubPeriodBytesSize); @@ -432,11 +426,6 @@ namespace Jack jack_error("Packet(s) missing from... %d %d", fLastSubCycle, subcycle); fLastSubCycle = subcycle; - - //clock.Update(); - //const float dt = clock.GetDeltaTime(); - //printf("Delta: %f s\n", dt); - return copy_size; } diff --git a/common/JackNetTool.h b/common/JackNetTool.h index dcda14ec..6ecabe4c 100644 --- a/common/JackNetTool.h +++ b/common/JackNetTool.h @@ -278,7 +278,7 @@ namespace Jack virtual int RenderToJackPorts () = 0; //network<->buffer - virtual int RenderFromNetwork ( int cycle, int subcycle, size_t copy_size ) = 0; + virtual int RenderFromNetwork ( int cycle, int subcycle, size_t copy_size ) = 0; virtual int RenderToNetwork (int subcycle, size_t total_size ) = 0; virtual void SetBuffer ( int index, sample_t* buffer ) = 0; diff --git a/common/JackWaitThreadedDriver.h b/common/JackWaitThreadedDriver.h index f81db20c..1448572b 100644 --- a/common/JackWaitThreadedDriver.h +++ b/common/JackWaitThreadedDriver.h @@ -64,8 +64,8 @@ class SERVER_EXPORT JackWaitThreadedDriver : public JackThreadedDriver // JackRunnableInterface interface bool Execute() { - // Blocks until decorated driver is started (that is when it's Init method returns). - fDriver->Initialize(); + // Blocks until decorated driver is started (that is when it's Initialize method returns true). + while (!fDriver->Initialize()) {} fRunning = true; return false; } diff --git a/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj b/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj index 07a76deb..1b84bcbb 100755 --- a/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj +++ b/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj @@ -153,12 +153,12 @@ /* Begin PBXFileReference section */ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D6058910D05DD3D006BFB54 /* NetJack.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJack.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJackSlave.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* iPhoneNet_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhoneNet_Prefix.pch; sourceTree = ""; }; - 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneNetMaster.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B0772380F54018C000DC657 /* NetJackMaster.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJackMaster.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4B0772490F54021B000DC657 /* main_slave.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main_slave.mm; sourceTree = SOURCE_ROOT; }; 4B0772500F54022D000DC657 /* main_master.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main_master.mm; sourceTree = SOURCE_ROOT; }; 4B0773840F541EE2000DC657 /* iPhoneNetAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhoneNetAppDelegate.h; sourceTree = ""; }; @@ -182,7 +182,7 @@ 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaust.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCB37D5112D64B4008C7BC1 /* HardwareClock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HardwareClock.cpp; sourceTree = SOURCE_ROOT; }; 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "iphone-faust.mm"; sourceTree = SOURCE_ROOT; }; - 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaustNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneThruNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCF75F610BC30140082C526 /* audio_thru.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_thru.mm; sourceTree = SOURCE_ROOT; }; 4BDFCCD7113DB30500D77992 /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = ""; }; 4BDFCD57113DB6B700D77992 /* NetJackSlave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetJackSlave.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -290,11 +290,11 @@ 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( - 1D6058910D05DD3D006BFB54 /* NetJack.app */, + 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */, 4BFF45120F4D59DB00106083 /* libjacknet.a */, 4BFF45770F4D5D9700106083 /* iPhoneFaustNet.app */, - 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */, - 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */, + 4B0772380F54018C000DC657 /* NetJackMaster.app */, + 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */, 4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */, 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */, 4BDFCD57113DB6B700D77992 /* NetJackSlave.app */, @@ -404,7 +404,7 @@ ); name = iPhoneNetSlave; productName = iPhoneNet; - productReference = 1D6058910D05DD3D006BFB54 /* NetJack.app */; + productReference = 1D6058910D05DD3D006BFB54 /* NetJackSlave.app */; productType = "com.apple.product-type.application"; }; 4B07721F0F54018C000DC657 /* iPhoneNetMaster */ = { @@ -421,7 +421,7 @@ ); name = iPhoneNetMaster; productName = iPhoneNet; - productReference = 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */; + productReference = 4B0772380F54018C000DC657 /* NetJackMaster.app */; productType = "com.apple.product-type.application"; }; 4B1A940F0F49BDE000D3626B /* libjacknet */ = { @@ -489,7 +489,7 @@ ); name = iPhoneThruNet; productName = iPhoneNet; - productReference = 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */; + productReference = 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */; productType = "com.apple.product-type.application"; }; 4BDFCD3B113DB6B700D77992 /* iPhoneNetSlaveLib */ = { @@ -793,7 +793,7 @@ "\"$(SRCROOT)/build/Debug-iphonesimulator\"", ); OTHER_LDFLAGS = libcelt.a; - PRODUCT_NAME = iPhoneNetSlave; + PRODUCT_NAME = NetJackSlave; SDKROOT = iphoneos3.1.3; }; name = Debug; @@ -822,7 +822,7 @@ "\"$(SRCROOT)/build/Debug-iphonesimulator\"", ); OTHER_LDFLAGS = libcelt.a; - PRODUCT_NAME = NetJack; + PRODUCT_NAME = NetJackSlave; SDKROOT = iphoneos3.1.3; }; name = Release; @@ -837,6 +837,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; HEADER_SEARCH_PATHS = ( + /usr/local/include, ../../macosx/coreaudio, ../../macosx, ../../posix, @@ -848,8 +849,8 @@ "$(inherited)", "\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\"", ); - OTHER_LDFLAGS = ""; - PRODUCT_NAME = iPhoneNetMaster; + OTHER_LDFLAGS = libcelt.a; + PRODUCT_NAME = NetJackMaster; SDKROOT = iphoneos3.1.3; }; name = Debug; @@ -862,6 +863,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; HEADER_SEARCH_PATHS = ( + /usr/local/include, ../../macosx/coreaudio, ../../common/jack, ../../common, @@ -873,7 +875,8 @@ "$(inherited)", "\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\"", ); - PRODUCT_NAME = iPhoneNetMaster; + OTHER_LDFLAGS = libcelt.a; + PRODUCT_NAME = NetJackMaster; }; name = Release; }; @@ -1097,7 +1100,7 @@ "\\\"$(SRCROOT)/build/Debug-iphonesimulator\\\"", ); OTHER_LDFLAGS = "-ljacknet"; - PRODUCT_NAME = iPhoneNetSlave; + PRODUCT_NAME = NetJackSlave; SDKROOT = iphoneos3.1.3; }; name = Debug; diff --git a/macosx/iphone/main_master.mm b/macosx/iphone/main_master.mm index 189ee2c7..308662f2 100644 --- a/macosx/iphone/main_master.mm +++ b/macosx/iphone/main_master.mm @@ -20,7 +20,7 @@ jack_adapter_t* adapter; float** audio_input_buffer; float** audio_output_buffer; -int buffer_size = 4096; +int buffer_size = 1024; int sample_rate = 44100; jack_master_t request = { buffer_size, sample_rate, "master" }; @@ -30,18 +30,22 @@ static void MasterAudioCallback(int frames, float** inputs, float** outputs, voi { int i; - // Copy from iPod input to network + // Copy from iPod input to network buffers for (i = 0; i < result.audio_input; i++) { memcpy(audio_output_buffer[i], inputs[i], buffer_size * sizeof(float)); } + + // Send network buffers if (jack_net_master_send(net, result.audio_output, audio_output_buffer, 0, NULL) < 0) { printf("jack_net_master_send error..\n"); } - // Copy from network to iPod output + // Recv network buffers if (jack_net_master_recv(net, result.audio_input, audio_input_buffer, 0, NULL) < 0) { printf("jack_net_master_recv error..\n"); } + + // Copy from network buffers to iPod output for (i = 0; i < result.audio_output; i++) { memcpy(outputs[i], audio_input_buffer[i], buffer_size * sizeof(float)); } @@ -57,6 +61,7 @@ int main(int argc, char *argv[]) { TiPhoneCoreAudioRenderer audio_device(NUM_INPUT, NUM_OUTPUT); if ((net = jack_net_master_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPhone", &request, &result)) == 0) { + printf("jack_net_master_open error..\n"); return -1; } @@ -82,7 +87,7 @@ int main(int argc, char *argv[]) { } // Run until interrupted - while (1) {} + //while (1) {} /* // Quite brutal way, the application actually does not start completely, the netjack audio processing loop is used instead... @@ -105,10 +110,11 @@ int main(int argc, char *argv[]) { }; */ + int retVal = UIApplicationMain(argc, argv, nil, nil); + audio_device.Stop(); audio_device.Close(); - - int retVal = UIApplicationMain(argc, argv, nil, nil); + // Wait for application end jack_net_master_close(net); diff --git a/macosx/iphone/main_slave.mm b/macosx/iphone/main_slave.mm index 289d643c..9de14866 100644 --- a/macosx/iphone/main_slave.mm +++ b/macosx/iphone/main_slave.mm @@ -70,6 +70,7 @@ int main(int argc, char *argv[]) { //if ((net = jack_net_slave_open("169.254.112.119", DEFAULT_PORT, "iPhone", &request, &result)) == 0) { if ((net = jack_net_slave_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPod", &request, &result)) == 0) { + printf("jack_net_slave_open error..\n"); return -1; }