Browse Source

Streaming from Mac to iPod (in slave mode) now somewhat works.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@3924 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 15 years ago
parent
commit
bc5ecb8e57
6 changed files with 80 additions and 27 deletions
  1. +2
    -0
      common/JackAudioAdapterInterface.cpp
  2. +3
    -1
      common/JackAudioAdapterInterface.h
  3. +17
    -3
      common/JackNetAPI.cpp
  4. +10
    -6
      macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj
  5. +1
    -1
      macosx/iphone/main_master.mm
  6. +47
    -16
      macosx/iphone/main_slave.mm

+ 2
- 0
common/JackAudioAdapterInterface.cpp View File

@@ -181,6 +181,8 @@ namespace Jack
{ {
if (fRingbufferCurSize > DEFAULT_RB_SIZE) if (fRingbufferCurSize > DEFAULT_RB_SIZE)
fRingbufferCurSize = DEFAULT_RB_SIZE; fRingbufferCurSize = DEFAULT_RB_SIZE;
jack_log("JackAudioAdapterInterface::ResetRingBuffers new_size = %ld", fRingbufferCurSize);
for (int i = 0; i < fCaptureChannels; i++) for (int i = 0; i < fCaptureChannels; i++)
fCaptureRingBuffer[i]->Reset(fRingbufferCurSize); fCaptureRingBuffer[i]->Reset(fRingbufferCurSize);


+ 3
- 1
common/JackAudioAdapterInterface.h View File

@@ -129,8 +129,10 @@ namespace Jack
fAdaptedSampleRate ( adapted_sample_rate ), fAdaptedSampleRate ( adapted_sample_rate ),
fPIControler(host_sample_rate / host_sample_rate, 256), fPIControler(host_sample_rate / host_sample_rate, 256),
fQuality(0), fQuality(0),
fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE),
fPullAndPushTime(0), fPullAndPushTime(0),
fRunning ( false )
fRunning(false),
fAdaptative(true)
{} {}


virtual ~JackAudioAdapterInterface() virtual ~JackAudioAdapterInterface()


+ 17
- 3
common/JackNetAPI.cpp View File

@@ -746,10 +746,24 @@ struct JackNetAdapter : public JackAudioAdapterInterface {
//ringbuffers //ringbuffers
fCaptureRingBuffer = new JackResampler*[fCaptureChannels]; fCaptureRingBuffer = new JackResampler*[fCaptureChannels];
fPlaybackRingBuffer = new JackResampler*[fPlaybackChannels]; 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(); 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] = new JackResampler();
fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize);
}


if (fCaptureChannels > 0) if (fCaptureChannels > 0)
jack_log("ReadSpace = %ld", fCaptureRingBuffer[0]->ReadSpace()); jack_log("ReadSpace = %ld", fCaptureRingBuffer[0]->ReadSpace());
@@ -925,7 +939,7 @@ SERVER_EXPORT void jack_log(const char *fmt, ...)
{ {
va_list ap; va_list ap;
va_start(ap, fmt); 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); va_end(ap);
} }




+ 10
- 6
macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj View File

@@ -27,7 +27,6 @@
4B0772330F54018C000DC657 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 4B0772330F54018C000DC657 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
4B0772340F54018C000DC657 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4B0772340F54018C000DC657 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; };
4B07724A0F54021B000DC657 /* main_slave.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B0772490F54021B000DC657 /* main_slave.mm */; }; 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 */; }; 4B0773860F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; };
4B0773870F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; }; 4B0773870F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; };
4B0773880F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; }; 4B0773880F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0773850F541EE2000DC657 /* iPhoneNetAppDelegate.m */; };
@@ -73,6 +72,7 @@
4B4146AB10BD3C4300C12F0C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 4B4146AB10BD3C4300C12F0C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
4B4146AC10BD3C4300C12F0C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4B4146AC10BD3C4300C12F0C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; };
4BBDC8FA0F5420C000465F9C /* freeverb.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BBDC8F90F5420C000465F9C /* freeverb.mm */; }; 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 */; }; 4BCB37B6112D647C008C7BC1 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
4BCB37C7112D647C008C7BC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 4BCB37C7112D647C008C7BC1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
4BCB37C8112D647C008C7BC1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 4BCB37C8112D647C008C7BC1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
@@ -161,10 +161,11 @@
4B2791870F72570C000536B7 /* JackGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackGlobals.cpp; path = ../../common/JackGlobals.cpp; sourceTree = SOURCE_ROOT; }; 4B2791870F72570C000536B7 /* JackGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackGlobals.cpp; path = ../../common/JackGlobals.cpp; sourceTree = SOURCE_ROOT; };
4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaustNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 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 = "<group>"; };
4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaust.app; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 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; }; 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; }; 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; }; 4BF1360E0F4B0B4C00218A3F /* JackAudioAdapterInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioAdapterInterface.cpp; path = ../../common/JackAudioAdapterInterface.cpp; sourceTree = SOURCE_ROOT; };
4BF136120F4B0B5E00218A3F /* JackAudioAdapterInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackAudioAdapterInterface.h; path = ../../common/JackAudioAdapterInterface.h; sourceTree = SOURCE_ROOT; }; 4BF136120F4B0B5E00218A3F /* JackAudioAdapterInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackAudioAdapterInterface.h; path = ../../common/JackAudioAdapterInterface.h; sourceTree = SOURCE_ROOT; };
@@ -262,7 +263,7 @@
4BFF45120F4D59DB00106083 /* libjacknet.a */, 4BFF45120F4D59DB00106083 /* libjacknet.a */,
4BFF45770F4D5D9700106083 /* iPhoneFaustNet.app */, 4BFF45770F4D5D9700106083 /* iPhoneFaustNet.app */,
4B0772380F54018C000DC657 /* iPhoneNetMaster.app */, 4B0772380F54018C000DC657 /* iPhoneNetMaster.app */,
4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */,
4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */,
4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */, 4B4146B010BD3C4300C12F0C /* iPhoneFaustNet.app */,
4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */, 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */,
); );
@@ -319,6 +320,7 @@
children = ( children = (
28AD733E0D9D9553002E5188 /* MainWindow.xib */, 28AD733E0D9D9553002E5188 /* MainWindow.xib */,
8D1107310486CEB800E47090 /* Info.plist */, 8D1107310486CEB800E47090 /* Info.plist */,
4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */,
); );
name = Resources; name = Resources;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -452,7 +454,7 @@
); );
name = iPhoneThruNet; name = iPhoneThruNet;
productName = iPhoneNet; productName = iPhoneNet;
productReference = 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */;
productReference = 4BCF75F210BC2FD90082C526 /* iPhoneFaustNet.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
4BFF455E0F4D5D9700106083 /* iPhoneFaustNet */ = { 4BFF455E0F4D5D9700106083 /* iPhoneFaustNet */ = {
@@ -583,11 +585,11 @@
4B07722C0F54018C000DC657 /* JackAudioAdapterInterface.cpp in Sources */, 4B07722C0F54018C000DC657 /* JackAudioAdapterInterface.cpp in Sources */,
4B07722D0F54018C000DC657 /* JackResampler.cpp in Sources */, 4B07722D0F54018C000DC657 /* JackResampler.cpp in Sources */,
4B07722E0F54018C000DC657 /* ringbuffer.c in Sources */, 4B07722E0F54018C000DC657 /* ringbuffer.c in Sources */,
4B0772510F54022D000DC657 /* main_master.mm in Sources */,
4B0773860F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */, 4B0773860F541EE2000DC657 /* iPhoneNetAppDelegate.m in Sources */,
4B27918B0F72570C000536B7 /* JackGlobals.cpp in Sources */, 4B27918B0F72570C000536B7 /* JackGlobals.cpp in Sources */,
4BF15E2511356A3E00B36B9A /* CAHostTimeBase.cpp in Sources */, 4BF15E2511356A3E00B36B9A /* CAHostTimeBase.cpp in Sources */,
4BF15F7811357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp in Sources */, 4BF15F7811357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp in Sources */,
4BC9C1F71135AB2800D22670 /* main_master.mm in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -699,6 +701,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
../../macosx/coreaudio,
../../macosx, ../../macosx,
../../posix, ../../posix,
../../common/jack, ../../common/jack,
@@ -711,7 +714,7 @@
); );
OTHER_LDFLAGS = ""; OTHER_LDFLAGS = "";
PRODUCT_NAME = iPhoneNetSlave; PRODUCT_NAME = iPhoneNetSlave;
SDKROOT = iphoneos2.2.1;
SDKROOT = iphoneos3.1.3;
}; };
name = Debug; name = Debug;
}; };
@@ -723,6 +726,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch; GCC_PREFIX_HEADER = iPhoneNet_Prefix.pch;
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
../../macosx/coreaudio,
../../common/jack, ../../common/jack,
../../common, ../../common,
../../posix, ../../posix,


+ 1
- 1
macosx/iphone/main_master.mm View File

@@ -26,7 +26,7 @@ int sample_rate = 44100;
jack_master_t request = { buffer_size, sample_rate, "master" }; jack_master_t request = { buffer_size, sample_rate, "master" };
jack_slave_t result; 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; int i;


+ 47
- 16
macosx/iphone/main_slave.mm View File

@@ -9,33 +9,39 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#include <jack/net.h> #include <jack/net.h>


#include "TiPhoneCoreAudioRenderer.h"

#define NUM_INPUT 2 #define NUM_INPUT 2
#define NUM_OUTPUT 2 #define NUM_OUTPUT 2


jack_net_slave_t* net; jack_net_slave_t* net;
jack_adapter_t* adapter; jack_adapter_t* adapter;


int buffer_size;
int sample_rate ;


static int net_process(jack_nframes_t buffer_size, 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; return 0;
} }


static void SlaveAudioCallback(int frames, float** inputs, float** outputs, void* arg)
{
jack_adapter_push_and_pull(adapter, inputs, outputs, frames);
}

int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
@@ -46,17 +52,42 @@ int main(int argc, char *argv[]) {
if ((net = jack_net_slave_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPhone", &request, &result)) == 0) { if ((net = jack_net_slave_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPhone", &request, &result)) == 0) {
return -1; 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); jack_set_net_slave_process_callback(net, net_process, NULL);
if (jack_net_slave_activate(net) != 0) { if (jack_net_slave_activate(net) != 0) {
return -1; return -1;
} }
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); int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release]; [pool release];
audio_device.Stop();
audio_device.Close();
// Wait for application end // Wait for application end
jack_net_slave_deactivate(net); jack_net_slave_deactivate(net);
jack_net_slave_close(net); jack_net_slave_close(net);
jack_destroy_adapter(adapter);
return retVal; return retVal;
} }

Loading…
Cancel
Save