Index: /jack2/branches/libjacknet/common/JackNetAPI.cpp =================================================================== --- /jack2/branches/libjacknet/common/JackNetAPI.cpp (revision 3923) +++ /jack2/branches/libjacknet/common/JackNetAPI.cpp (revision 3924) @@ -747,8 +747,22 @@ fCaptureRingBuffer = new JackResampler*[fCaptureChannels]; fPlaybackRingBuffer = new JackResampler*[fPlaybackChannels]; - for (int i = 0; i < fCaptureChannels; i++ ) + + if (fAdaptative) { + AdaptRingBufferSize(); + jack_info("Ringbuffer automatic adaptative mode size = %d frames", fRingbufferCurSize); + } else { + if (fRingbufferCurSize > DEFAULT_RB_SIZE) + fRingbufferCurSize = DEFAULT_RB_SIZE; + jack_info("Fixed ringbuffer size = %d frames", fRingbufferCurSize); + } + + for (int i = 0; i < fCaptureChannels; i++ ) { fCaptureRingBuffer[i] = new JackResampler(); - for (int i = 0; i < fPlaybackChannels; i++ ) + fCaptureRingBuffer[i]->Reset(fRingbufferCurSize); + } + for (int i = 0; i < fPlaybackChannels; i++ ) { fPlaybackRingBuffer[i] = new JackResampler(); + fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize); + } if (fCaptureChannels > 0) @@ -926,5 +940,5 @@ va_list ap; va_start(ap, fmt); - jack_format_and_log(LOG_LEVEL_INFO, "Jack: ", fmt, ap); + //jack_format_and_log(LOG_LEVEL_INFO, "Jack: ", fmt, ap); va_end(ap); } Index: /jack2/branches/libjacknet/common/JackAudioAdapterInterface.h =================================================================== --- /jack2/branches/libjacknet/common/JackAudioAdapterInterface.h (revision 3448) +++ /jack2/branches/libjacknet/common/JackAudioAdapterInterface.h (revision 3924) @@ -130,6 +130,8 @@ fPIControler(host_sample_rate / host_sample_rate, 256), fQuality(0), + fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE), fPullAndPushTime(0), - fRunning ( false ) + fRunning(false), + fAdaptative(true) {} Index: /jack2/branches/libjacknet/common/JackAudioAdapterInterface.cpp =================================================================== --- /jack2/branches/libjacknet/common/JackAudioAdapterInterface.cpp (revision 3918) +++ /jack2/branches/libjacknet/common/JackAudioAdapterInterface.cpp (revision 3924) @@ -182,4 +182,6 @@ if (fRingbufferCurSize > DEFAULT_RB_SIZE) fRingbufferCurSize = DEFAULT_RB_SIZE; + + jack_log("JackAudioAdapterInterface::ResetRingBuffers new_size = %ld", fRingbufferCurSize); for (int i = 0; i < fCaptureChannels; i++) Index: /jack2/branches/libjacknet/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj =================================================================== --- /jack2/branches/libjacknet/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj (revision 3923) +++ /jack2/branches/libjacknet/macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj (revision 3924) @@ -28,5 +28,4 @@ 4B0772340F54018C000DC657 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4B07724A0F54021B000DC657 /* main_slave.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B0772490F54021B000DC657 /* main_slave.mm */; }; - 4B0772510F54022D000DC657 /* main_master.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B0772500F54022D000DC657 /* main_master.mm */; }; 4B0773860F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; }; 4B0773870F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; }; @@ -74,4 +73,5 @@ 4B4146AC10BD3C4300C12F0C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4BBDC8FA0F5420C000465F9C /* freeverb.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BBDC8F90F5420C000465F9C /* freeverb.mm */; }; + 4BC9C1F71135AB2800D22670 /* main_master.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B0772500F54022D000DC657 /* main_master.mm */; }; 4BCB37B6112D647C008C7BC1 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 4BCB37C7112D647C008C7BC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; @@ -162,8 +162,9 @@ 4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaustNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BBDC8F90F5420C000465F9C /* freeverb.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = freeverb.mm; sourceTree = SOURCE_ROOT; }; + 4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iPhoneNetMasterAppl-Info.plist"; sourceTree = ""; }; 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 /* iPhoneThruNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneThruNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaustNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCF75F610BC30140082C526 /* audio_thru.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_thru.mm; sourceTree = SOURCE_ROOT; }; 4BF1360E0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioAdapterInterface.cpp; path = ../../common/JackAudioAdapterInterface.cpp; sourceTree = SOURCE_ROOT; }; @@ -263,5 +264,5 @@ 4BFF45770F4D5D9700106083 /* iPhoneFaustNet.app */, 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */, - 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */, + 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */, 4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */, 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */, @@ -320,4 +321,5 @@ 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 8D1107310486CEB800E47090 /* Info.plist */, + 4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */, ); name = Resources; @@ -453,5 +455,5 @@ name = iPhoneThruNet; productName = iPhoneNet; - productReference = 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */; + productReference = 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */; productType = "com.apple.product-type.application"; }; @@ -584,9 +586,9 @@ 4B07722D0F54018C000DC657 /* JackResampler.cpp in Sources */, 4B07722E0F54018C000DC657 /* ringbuffer.c in Sources */, - 4B0772510F54022D000DC657 /* main_master.mm in Sources */, 4B0773860F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */, 4B27918B0F72570C000536B7 /* JackGlobals.cpp in Sources */, 4BF15E2511356A3E00B36B9A /* CAHostTimeBase.cpp in Sources */, 4BF15F7811357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp in Sources */, + 4BC9C1F71135AB2800D22670 /* main_master.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -700,4 +702,5 @@ GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; HEADER_SEARCH_PATHS = ( + ../../macosx/coreaudio, ../../macosx, ../../posix, @@ -712,5 +715,5 @@ OTHER_LDFLAGS = ""; PRODUCT_NAME = iPhoneNetSlave; - SDKROOT = iphoneos2.2.1; + SDKROOT = iphoneos3.1.3; }; name = Debug; @@ -724,4 +727,5 @@ GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; HEADER_SEARCH_PATHS = ( + ../../macosx/coreaudio, ../../common/jack, ../../common, Index: /jack2/branches/libjacknet/macosx/iphone/main_slave.mm =================================================================== --- /jack2/branches/libjacknet/macosx/iphone/main_slave.mm (revision 3922) +++ /jack2/branches/libjacknet/macosx/iphone/main_slave.mm (revision 3924) @@ -10,4 +10,6 @@ #include +#include "TiPhoneCoreAudioRenderer.h" + #define NUM_INPUT 2 #define NUM_OUTPUT 2 @@ -16,23 +18,27 @@ jack_adapter_t* adapter; +int buffer_size; +int sample_rate ; + + static int net_process(jack_nframes_t buffer_size, - int audio_input, - float** audio_input_buffer, - int midi_input, - void** midi_input_buffer, - int audio_output, - float** audio_output_buffer, - int midi_output, - void** midi_output_buffer, - void* data) + int audio_input, + float** audio_input_buffer, + int midi_input, + void** midi_input_buffer, + int audio_output, + float** audio_output_buffer, + int midi_output, + void** midi_output_buffer, + void* data) { - // Process input, produce output - if (audio_input == audio_output) { - // Copy input to output - for (int i = 0; i < audio_input; i++) { - memcpy(audio_output_buffer[i], audio_input_buffer[i], buffer_size * sizeof(float)); - } - } + + jack_adapter_pull_and_push(adapter, audio_output_buffer, audio_input_buffer, buffer_size); return 0; +} + +static void SlaveAudioCallback(int frames, float** inputs, float** outputs, void* arg) +{ + jack_adapter_push_and_pull(adapter, inputs, outputs, frames); } @@ -47,4 +53,15 @@ return -1; } + + if ((adapter = jack_create_adapter(NUM_INPUT, + NUM_OUTPUT, + result.buffer_size, + result.sample_rate, + result.buffer_size, + result.sample_rate)) == 0) { + return -1; + } + + TiPhoneCoreAudioRenderer audio_device(NUM_INPUT, NUM_OUTPUT); jack_set_net_slave_process_callback(net, net_process, NULL); @@ -53,10 +70,24 @@ } + if (audio_device.OpenDefault(result.buffer_size, result.sample_rate) < 0) { + return -1; + } + + audio_device.SetAudioCallback(SlaveAudioCallback, NULL); + + if (audio_device.Start() < 0) { + return -1; + } + int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; + + audio_device.Stop(); + audio_device.Close(); // Wait for application end jack_net_slave_deactivate(net); jack_net_slave_close(net); + jack_destroy_adapter(adapter); return retVal; } Index: /jack2/branches/libjacknet/macosx/iphone/main_master.mm =================================================================== --- /jack2/branches/libjacknet/macosx/iphone/main_master.mm (revision 3923) +++ /jack2/branches/libjacknet/macosx/iphone/main_master.mm (revision 3924) @@ -27,5 +27,5 @@ jack_slave_t result; -void MasterAudioCallback(int frames, float** inputs, float** outputs, void* arg) +static void MasterAudioCallback(int frames, float** inputs, float** outputs, void* arg) { int i;