git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2661 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -21,6 +21,14 @@ Romain Moret | |||
Jackdmp changes log | |||
--------------------------- | |||
2008-07-08 Stephane Letz <letz@grame.fr> | |||
* Merge windows branch back to trunk. | |||
2008-07-05 Stephane Letz <letz@grame.fr> | |||
* Netioadapter renamed in audioadapter. | |||
2008-07-04 Stephane Letz <letz@grame.fr> | |||
* Netioadapter now adapts for buffer size and sample rate changes. | |||
@@ -1,92 +1,91 @@ | |||
------------------------------- | |||
NetJack for Jackmp | |||
------------------------------- | |||
This branche includes a version of netjack designed for jackmp. | |||
This prerelease is far from being complete and doesn't include some of the features proposed by netjack (no transport yet). | |||
Indeed, the original concept has been completely redesigned to better fit to the jackmp architecture, but also in order to provide additional capabilities, and ultimately a greater robustness. | |||
This document describes the major changes between those two systems, then a simple how-to for setting up a basic usage of 'netjackmp'. | |||
------------------------------- | |||
Major changes and architecture | |||
------------------------------- | |||
The biggest difference between netjack and netjackmp is the way of slicing audio and midi streams into network packets. | |||
For one audio cycle, netjack used to take all audio and midi buffers (one per channel), put butt all of them, then send it over the network. | |||
The problem is that a network packet has a fixed maximum size, depending on the network infrastructure (for 100mb, it reaches 1500bytes - MTU of the network). | |||
The solution is then to slice those buffers into smaller ones, and then send as many packets as we need. This cutting up can be done by network equipments, but it's more efficient and secure to include it in the software data management. | |||
Still this slicing brings another issue : all the packets are not pleased with any emission order and are unfortunately received in a random order, thanks to UDP. | |||
So we can't deal with data as it comes, we need to re-bufferize incoming streams in order to rebuild complete audio buffers. | |||
With netjackmp, the main idea is to make this slicing depending on the network capabilities. | |||
If we can put only 128 complete audio frames (128 samples for all audio channels) in a network packet, the elementary packet will so carry 128 frames, and in one cycle, we will transmit as many packet as we need. We take the example of 128 frames because it's the current value for 2 channels. This value is determinated by taking the maximum 'power of 2' frames we can put in a packet. | |||
If we take 2 channels, 4 bytes per sample (float values), we get 8 bytes per frame, with 128 frames, we now have 1024 bytes, so we can put these 1024 bytes in one packet, and add a small header which identify the packet. | |||
This technique allows to separate the packets (in time) so they can be received in the order they have been emitted. | |||
If the master is running at 512 frames per second, four audio packets are sent per cycle and the slave deals with them as they arrive. | |||
With gigabytes networks, the MTU is larger, so we can put more data in one packet (in this example, we can even put the complete cycle in one packet). | |||
For midi data, netjack used to send the whole buffer, in this example, 512 frames * 4 bytes per sample and per midi port. Those 2048 bytes are in 99% of the time filled to a few bytes, but rarely more. This means that if we have 2 audio and 2 midi channels to transmit, everything happens as if we had 4 audio channels, which is quite a waste of bandwidth. | |||
In netjackmp, the idea is to take into account that fact, by sending only the useful bytes, and not more. It's completely unappropriate to overload the network with useless data. | |||
So we now have : 99% of the time one midi packet (of a few dozen of bytes), followed by four audio packets (in this example). | |||
Those five packets are preceded by a synchronization packet, which will make the slave directly synched on the master's cycle rythm. | |||
This way of separating audio and midi is quite important. We deal here with network transmissions, and also need to be 'realtime'. We need a system which allow to carry as many audio and midi data streams as we need and can, as if the distant computer was in fact a simple jack client. With all those constraints, we can't avoid packets loss. The better thing to do is to deal with it. | |||
But to loose an audio packet is different from skipping a midi one. Indeed, an audio loss leads to audio click, or undesirable, but very short side effect. Whereas a midi data loss can be completely disastrous. Imagine that we play some notes, with sustain, and we loose the sustain 0 value, which stops the effect. The sustain keeps going on on all following notes until the next 'sustain off' event. A simple missing byte can put all the midi system offside (that's the purpose of all the big PANIC buttons on midi softwares...). | |||
That's why we need to separate audio (more than one per cycle) from midi (one packet at 99% of the time). If we loose an audio packet, we probably still have an available midi packet, so we can use what we received, even if some audio is missing. | |||
The second main difference between netjack and netjackmp is the way the two computers (master and slave) synchronise their parametering and launch. | |||
In netjack, once the slave configured (by the command line) and launched, it was waiting for the first incoming packet to synchronize (launch its first audio cycle) then run. | |||
The two computers needed to be configured separately but with the same parameters to run correctly. | |||
In netjackmp, the only thing you have to set for the slave is its number of in/out midi and audio channels. No more need to choose and set parameters depending on the master, they are automatically determinated and communicated to the slave. | |||
This first synchronization step uses a multicast communication, no more need to know by advance all the IP addresses. The slave says on a multicast address "hey, I'm available". A master get the message, and communicate parametering to the slave. Once synchronization done, audio transfers can start. Moreover, the master being still listening on the multicast address, it can catch other slaves and manage them (create a jack client to communicate with the slave, and neatily close everything when the slave is gone). | |||
The loaded internal client is no longer only an interface for the slave, like in netjack. It's now called 'network manager', it doesn't deal with audio or midi, just with some kind of 'network logistical messages'. The manager automatically create a new internal client as soon as a new slave is seen on the network (by sending messages on the multicast address the manager is listening on). This manager is also able to remove one of its internal client as soon as a slave has left the network. This conception allow a complete separation of audio exchanges from parametering and management. | |||
The 'unloading' of the internal client (the manager) will cause a full cleaning of the infrastructure. The jack clients are all removed from the server, the slave are all turned available again, ready to be cought by another master etc. When a slave quits, it's also automatically removed from the manager's slaves list. | |||
------------------------------- | |||
Current limitations | |||
------------------------------- | |||
The netjackmp's development has just started. This prerelease is operational, but involve some serious limitations : | |||
- You can't set the bitdepth of the transmitted audio samples. Floating point values are used for now. The possibility to use 16 or 24bits data will be included soon, like in netjack. It's important to notice that change the bitdepth id very expensive in processing ressources (because it is a sample to sample operation). | |||
- The 'inter-slave' communication is not optimized yet. If you connect one slave to another, the network streams go through the master. While sending network addresses to the slaves when they are inter-jack-connected, we could make the slave possibly independant of the master (except for the synchronization, sent over the network). This is the next step of the netjackmp development. | |||
- This is not actually working on windows, because the windows socket API (the network development tools) aren't the same as under unix systems (linux and macosx). | |||
- Because of the current development, the parametering of the whole system is minimalistic. For now you can't set another value of the MTU (allowing larger packets, meaning less packet, so less packet loss). The MTU issue is also a quite big one. In fact, the better thing to do seems to include an automatic detection of the MTU (called path MTU discovery) between master and slave. But this detection is quite controversial because it actually needs ICMP messages, which are more and more often unwanted nay blocked or ignored by network devices such as routers or firewalls (for security reasons). So in a first time, the MTU will possibly be a parameter of the master, like it is now in netjack. The fact is in this version, the MTU is set to 1500bytes, and it works fine on local 100mb networks. Future versions will include the possibility to set the MTU, which can be larger on gigabit networks (9000bytes for jumbo frames). | |||
- Unlike netjack, this version doesn't include transport, this is naturraly planned for the fully operational version. | |||
- Netjackmp can't use audio hardware to capture or play some sound. All these resampling processes will also be developed soon. | |||
------------------------------- | |||
How-to use this ? | |||
------------------------------- | |||
Netjackmp is very simple to use. On the master's side, an internal client deals with the slaves, and the slaves themselves are classical jack servers running under a 'network audio driver'. | |||
The difference between the two versions is that the master now has a manager, which takes care of the slaves, while listening on the multicast address and create a new master as soon as a slave is available. But everything is transparent to the user, that's why it uses multicast (someone says "hello", and anyone who wants to hear it just has to listen). | |||
So, just compile and install jackmp as you are used to, on linux, using 'scons' then 'scons install', on macosx, you can use the xcode project. | |||
On the master, just launch a classical jack server, the period size doesn't matter. | |||
Then, load the network manager using jack_load : | |||
'jack_load netmanager' | |||
This will load the internal client, which will wait for an available slave (see the message window on qjackctl - or the console output). | |||
On the slave, just launch a new jack server using : | |||
'jackd -R -S -d net' | |||
The '-S' (synchronous) option is mandatory. Indeed, the jack server isn't able to deal with the current cycle produced audio data because when the 'send' is called, data are not necessarily already available. So in a given 'n' cycle, the server will send the data produced at the 'n-1' cycle. | |||
In this case, there is no effect on latency because all the subcycles of the slave (the previous 4 subcycles for instance) are run in the given master's cycle. | |||
You can specify some options, like '-n name' (will give a name to the slave, default is the network hostname), '-C input_ports' (the number of master-->slave channels), '-P output_ports' (the number of slave-->master channels), default is 2 ; or '-i midi_in_ports' and '-o midi_out_ports', default is 0. Don't use '-a address' and '-p port', these are here to specify others multicast address and port, but it's not implemented on the master yet. | |||
------------------------------- | |||
What's next ? | |||
------------------------------- | |||
The development of 'netjackmp' continues and some things are going to change soon (see the 'actual limitations' section). | |||
If you use it, please report encountered bugs, ideas or anything you think about. | |||
If you have any question, you can subscribe the jackaudio developpers mailing list at http://www.jackaudio.org/ or join the IRC channel 'jack' on FreeNode. | |||
------------------------------- | |||
NetJack for Jackmp | |||
------------------------------- | |||
This branche includes a version of netjack designed for jackmp. | |||
This prerelease is far from being complete and doesn't include some of the features proposed by netjack (no transport yet). | |||
Indeed, the original concept has been completely redesigned to better fit to the jackmp architecture, but also in order to provide additional capabilities, and ultimately a greater robustness. | |||
This document describes the major changes between those two systems, then a simple how-to for setting up a basic usage of 'netjackmp'. | |||
------------------------------- | |||
Major changes and architecture | |||
------------------------------- | |||
The biggest difference between netjack and netjackmp is the way of slicing audio and midi streams into network packets. | |||
For one audio cycle, netjack used to take all audio and midi buffers (one per channel), put butt all of them, then send it over the network. | |||
The problem is that a network packet has a fixed maximum size, depending on the network infrastructure (for 100mb, it reaches 1500bytes - MTU of the network). | |||
The solution is then to slice those buffers into smaller ones, and then send as many packets as we need. This cutting up can be done by network equipments, but it's more efficient and secure to include it in the software data management. | |||
Still this slicing brings another issue : all the packets are not pleased with any emission order and are unfortunately received in a random order, thanks to UDP. | |||
So we can't deal with data as it comes, we need to re-bufferize incoming streams in order to rebuild complete audio buffers. | |||
With netjackmp, the main idea is to make this slicing depending on the network capabilities. | |||
If we can put only 128 complete audio frames (128 samples for all audio channels) in a network packet, the elementary packet will so carry 128 frames, and in one cycle, we will transmit as many packet as we need. We take the example of 128 frames because it's the current value for 2 channels. This value is determinated by taking the maximum 'power of 2' frames we can put in a packet. | |||
If we take 2 channels, 4 bytes per sample (float values), we get 8 bytes per frame, with 128 frames, we now have 1024 bytes, so we can put these 1024 bytes in one packet, and add a small header which identify the packet. | |||
This technique allows to separate the packets (in time) so they can be received in the order they have been emitted. | |||
If the master is running at 512 frames per second, four audio packets are sent per cycle and the slave deals with them as they arrive. | |||
With gigabytes networks, the MTU is larger, so we can put more data in one packet (in this example, we can even put the complete cycle in one packet). | |||
For midi data, netjack used to send the whole buffer, in this example, 512 frames * 4 bytes per sample and per midi port. Those 2048 bytes are in 99% of the time filled to a few bytes, but rarely more. This means that if we have 2 audio and 2 midi channels to transmit, everything happens as if we had 4 audio channels, which is quite a waste of bandwidth. | |||
In netjackmp, the idea is to take into account that fact, by sending only the useful bytes, and not more. It's completely unappropriate to overload the network with useless data. | |||
So we now have : 99% of the time one midi packet (of a few dozen of bytes), followed by four audio packets (in this example). | |||
Those five packets are preceded by a synchronization packet, which will make the slave directly synched on the master's cycle rythm. | |||
This way of separating audio and midi is quite important. We deal here with network transmissions, and also need to be 'realtime'. We need a system which allow to carry as many audio and midi data streams as we need and can, as if the distant computer was in fact a simple jack client. With all those constraints, we can't avoid packets loss. The better thing to do is to deal with it. | |||
But to loose an audio packet is different from skipping a midi one. Indeed, an audio loss leads to audio click, or undesirable, but very short side effect. Whereas a midi data loss can be completely disastrous. Imagine that we play some notes, with sustain, and we loose the sustain 0 value, which stops the effect. The sustain keeps going on on all following notes until the next 'sustain off' event. A simple missing byte can put all the midi system offside (that's the purpose of all the big PANIC buttons on midi softwares...). | |||
That's why we need to separate audio (more than one per cycle) from midi (one packet at 99% of the time). If we loose an audio packet, we probably still have an available midi packet, so we can use what we received, even if some audio is missing. | |||
The second main difference between netjack and netjackmp is the way the two computers (master and slave) synchronise their parametering and launch. | |||
In netjack, once the slave configured (by the command line) and launched, it was waiting for the first incoming packet to synchronize (launch its first audio cycle) then run. | |||
The two computers needed to be configured separately but with the same parameters to run correctly. | |||
In netjackmp, the only thing you have to set for the slave is its number of in/out midi and audio channels. No more need to choose and set parameters depending on the master, they are automatically determinated and communicated to the slave. | |||
This first synchronization step uses a multicast communication, no more need to know by advance all the IP addresses. The slave says on a multicast address "hey, I'm available". A master get the message, and communicate parametering to the slave. Once synchronization done, audio transfers can start. Moreover, the master being still listening on the multicast address, it can catch other slaves and manage them (create a jack client to communicate with the slave, and neatily close everything when the slave is gone). | |||
The loaded internal client is no longer only an interface for the slave, like in netjack. It's now called 'network manager', it doesn't deal with audio or midi, just with some kind of 'network logistical messages'. The manager automatically create a new internal client as soon as a new slave is seen on the network (by sending messages on the multicast address the manager is listening on). This manager is also able to remove one of its internal client as soon as a slave has left the network. This conception allow a complete separation of audio exchanges from parametering and management. | |||
The 'unloading' of the internal client (the manager) will cause a full cleaning of the infrastructure. The jack clients are all removed from the server, the slave are all turned available again, ready to be cought by another master etc. When a slave quits, it's also automatically removed from the manager's slaves list. | |||
------------------------------- | |||
Current limitations | |||
------------------------------- | |||
The netjackmp's development has just started. This prerelease is operational, but involve some serious limitations : | |||
- You can't set the bitdepth of the transmitted audio samples. Floating point values are used for now. The possibility to use 16 or 24bits data will be included soon, like in netjack. It's important to notice that change the bitdepth id very expensive in processing ressources (because it is a sample to sample operation). | |||
- The 'inter-slave' communication is not optimized yet. If you connect one slave to another, the network streams go through the master. While sending network addresses to the slaves when they are inter-jack-connected, we could make the slave possibly independant of the master (except for the synchronization, sent over the network). This is the next step of the netjackmp development. | |||
- Because of the current development, the parametering of the whole system is minimalistic. | |||
- Unlike netjack, this version doesn't include transport, this is naturally planned for the fully operational version. | |||
- The 'Audio Adapter' is not completely working, there are several improvements to do. | |||
------------------------------- | |||
How-to use this ? | |||
------------------------------- | |||
Netjackmp is very simple to use. On the master's side, an internal client deals with the slaves, and the slaves themselves are classical jack servers running under a 'network audio driver'. | |||
The difference between the two versions is that the master now has a manager, which takes care of the slaves, while listening on the multicast address and create a new master as soon as a slave is available. But everything is transparent to the user, that's why it uses multicast (someone says "hello", and anyone who wants to hear it just has to listen). | |||
So, just compile and install jackmp as you are used to, on linux, using './waf configure', './waf' and './waf install' as root. On macosx, you can use the xcode project. | |||
On Windows, you can use the Code::Blocks workspace (you also have a small script to make an all in one installer). | |||
On the master, just launch a classical jack server, the period size doesn't matter. | |||
Then, load the network manager using jack_load : | |||
'jack_load netmanager' | |||
This will load the internal client, which will wait for an available slave (see the message window on qjackctl - or the console output). | |||
On the slave, just launch a new jack server using : | |||
'jackd -R -S -d net' | |||
The '-S' (synchronous) option is mandatory. Indeed, the jack server isn't able to deal with the current cycle produced audio data because when the 'send' is called, data are not necessarily already available. So in a given 'n' cycle, the server will send the data produced at the 'n-1' cycle. | |||
In this case, there is no effect on latency because all the subcycles of the slave (the previous 4 subcycles for instance) are run in the given master's cycle. | |||
You can specify some options, like '-n name' (will give a name to the slave, default is the network hostname), '-C input_ports' (the number of master-->slave channels), '-P output_ports' (the number of slave-->master channels), default is 2 ; or '-i midi_in_ports' and '-o midi_out_ports', default is 0. Don't use '-a address' and '-p port', these are here to specify others multicast address and port, but it's not implemented on the master yet. | |||
------------------------------- | |||
What's next ? | |||
------------------------------- | |||
The development of 'netjackmp' continues and some things are going to change soon (see the 'actual limitations' section). | |||
If you use it, please report encountered bugs, ideas or anything you think about. | |||
If you have any question, you can subscribe the jackaudio developers mailing list at http://www.jackaudio.org/ or join the IRC channel 'jack' on FreeNode. |
@@ -13,7 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
@@ -247,7 +247,7 @@ extern "C" | |||
} | |||
#endif | |||
#ifdef WIN32 | |||
#if defined(WIN32) && !defined(__MINGW32__) | |||
/* missing on Windows : see http://bugs.mysql.com/bug.php?id=15936 */ | |||
inline double rint(double nr) | |||
{ | |||
@@ -270,11 +270,11 @@ static inline bool CheckBufferSize(jack_nframes_t buffer_size) | |||
static inline void WaitGraphChange() | |||
{ | |||
/* | |||
TLS key that is set only in RT thread, so never waits for pending | |||
TLS key that is set only in RT thread, so never waits for pending | |||
graph change in RT context (just read the current graph state). | |||
*/ | |||
if (jack_tls_get(gRealTime) == NULL) { | |||
if (jack_tls_get(gRealTime) == NULL) { | |||
JackGraphManager* manager = GetGraphManager(); | |||
JackEngineControl* control = GetEngineControl(); | |||
assert(manager); | |||
@@ -300,7 +300,7 @@ EXPORT jack_client_t* jack_client_new(const char* client_name) | |||
{ | |||
jack_error("jack_client_new: deprecated"); | |||
int options = JackUseExactName; | |||
if (getenv("JACK_START_SERVER") == NULL) | |||
if (getenv("JACK_START_SERVER") == NULL) | |||
options |= JackNoStartServer; | |||
return jack_client_open_aux(client_name, (jack_options_t)options, NULL, NULL); | |||
} | |||
@@ -12,7 +12,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
@@ -134,6 +134,7 @@ static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* ad | |||
#ifdef WIN32 | |||
#ifndef __MINGW32__ | |||
#ifdef __SMP__ | |||
# define LOCK lock | |||
#else | |||
@@ -162,6 +163,29 @@ inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void * addr) | |||
return c; | |||
} | |||
#else | |||
#ifdef __SMP__ | |||
# define LOCK "lock ; " | |||
#else | |||
# define LOCK "" | |||
#endif | |||
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||
{ | |||
register char ret; | |||
__asm__ __volatile__ ( | |||
"# CAS \n\t" | |||
LOCK "cmpxchg %2, (%1) \n\t" | |||
"sete %0 \n\t" | |||
: "=a" (ret) | |||
: "c" (addr), "d" (newvalue), "a" (value) | |||
); | |||
return ret; | |||
} | |||
#endif | |||
#endif | |||
static inline long INC_ATOMIC(volatile SInt32* val) | |||
@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
#include "JackConstants.h" | |||
#include "JackActivationCount.h" | |||
#include "JackError.h" | |||
#include "JackExports.h" | |||
#include <assert.h> | |||
@@ -371,7 +372,7 @@ struct JackClientTiming | |||
</UL> | |||
*/ | |||
class JackConnectionManager | |||
class EXPORT JackConnectionManager | |||
{ | |||
private: | |||
@@ -372,7 +372,7 @@ jackctl_setup_signals( | |||
(void) signal(SIGABRT, do_nothing_handler); | |||
(void) signal(SIGTERM, do_nothing_handler); | |||
return waitEvent; | |||
return (sigset_t)waitEvent; | |||
} | |||
void jackctl_wait_signals(sigset_t signals) | |||
@@ -385,7 +385,7 @@ void jackctl_wait_signals(sigset_t signals) | |||
#else | |||
static | |||
void | |||
void | |||
do_nothing_handler(int sig) | |||
{ | |||
/* this is used by the child (active) process, but it never | |||
@@ -451,7 +451,7 @@ jackctl_setup_signals( | |||
sigaddset(&signals, SIGUSR2); | |||
/* all child threads will inherit this mask unless they | |||
* explicitly reset it | |||
* explicitly reset it | |||
*/ | |||
pthread_sigmask(SIG_BLOCK, &signals, 0); | |||
@@ -470,9 +470,9 @@ jackctl_setup_signals( | |||
if (sigismember (&signals, i)) | |||
{ | |||
sigaction(i, &action, 0); | |||
} | |||
} | |||
} | |||
return signals; | |||
} | |||
@@ -493,7 +493,9 @@ jackctl_wait_signals(sigset_t signals) | |||
case SIGUSR2: | |||
// driver exit | |||
waiting = false; | |||
break; | |||
break; | |||
case SIGTTOU: | |||
break; | |||
default: | |||
waiting = false; | |||
break; | |||
@@ -241,14 +241,14 @@ jackctl_parse_driver_params (jackctl_driver *driver_ptr, int argc, char* argv[]) | |||
jackctl_parameter_t * param = NULL; | |||
union jackctl_parameter_value value; | |||
if (argc <= 1) | |||
if (argc <= 1) | |||
return 0; | |||
const JSList * driver_params = jackctl_driver_get_parameters(driver_ptr); | |||
if (driver_params == NULL) | |||
return 1; | |||
jack_driver_desc_t * desc = jackctl_driver_get_desc(driver_ptr); | |||
jack_driver_desc_t * desc = jackctl_driver_get_desc(driver_ptr); | |||
/* check for help */ | |||
if (strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "--help") == 0) { | |||
@@ -303,7 +303,7 @@ jackctl_parse_driver_params (jackctl_driver *driver_ptr, int argc, char* argv[]) | |||
node_ptr = (JSList *)driver_params; | |||
while (node_ptr) { | |||
param = (jackctl_parameter_t*)node_ptr->data; | |||
param = (jackctl_parameter_t*)node_ptr->data; | |||
if (opt == jackctl_parameter_get_id(param)) { | |||
break; | |||
} | |||
@@ -318,7 +318,7 @@ jackctl_parse_driver_params (jackctl_driver *driver_ptr, int argc, char* argv[]) | |||
if (optarg) { | |||
switch (jackctl_parameter_get_type(param)) { | |||
case JackDriverParamInt: | |||
case JackDriverParamInt: | |||
value.i = atoi (optarg); | |||
jackctl_parameter_set_value(param, &value); | |||
break; | |||
@@ -360,7 +360,7 @@ jackctl_parse_driver_params (jackctl_driver *driver_ptr, int argc, char* argv[]) | |||
value.i = true; | |||
} else { | |||
value = jackctl_parameter_get_default_value(param); | |||
} | |||
} | |||
jackctl_parameter_set_value(param, &value); | |||
} | |||
} | |||
@@ -439,7 +439,7 @@ jack_drivers_get_descriptor (JSList * drivers, const char * sofile) | |||
#ifdef WIN32 | |||
if ((so_get_descriptor == NULL) && (dlerr = GetLastError()) != 0) { | |||
jack_error("%ld", dlerr); | |||
jack_log("Jack::jack_drivers_get_descriptor : dll is not a driver, error ld", dlerr); | |||
#else | |||
if ((so_get_descriptor == NULL) && (dlerr = dlerror ()) != NULL) { | |||
jack_error("%s", dlerr); | |||
@@ -26,45 +26,47 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackExports.h" | |||
#include "JackError.h" | |||
namespace Jack | |||
namespace Jack | |||
{ | |||
class EXPORT JackException : public std::runtime_error { | |||
public: | |||
JackException(const std::string& msg) : runtime_error(msg) | |||
JackException(const std::string& msg) : std::runtime_error(msg) | |||
{} | |||
JackException(const char* msg) : runtime_error(msg) | |||
JackException(char* msg) : std::runtime_error(msg) | |||
{} | |||
std::string Message() | |||
JackException(const char* msg) : std::runtime_error(msg) | |||
{} | |||
std::string Message() | |||
{ | |||
return what(); | |||
} | |||
void PrintMessage() | |||
void PrintMessage() | |||
{ | |||
std::string str = what(); | |||
if (str != "") | |||
jack_info(str.c_str()); | |||
} | |||
}; | |||
class EXPORT JackDriverException : public JackException { | |||
public: | |||
JackDriverException(const std::string& msg) : JackException(msg) | |||
JackDriverException(const std::string& msg) : JackException(msg) | |||
{} | |||
JackDriverException(char* msg) : JackException(msg) | |||
{} | |||
JackDriverException(const char* msg) : JackException(msg) | |||
JackDriverException(const char* msg) : JackException(msg) | |||
{} | |||
JackDriverException() : JackException("") | |||
JackDriverException() : JackException("") | |||
{} | |||
}; | |||
} | |||
} | |||
#endif |
@@ -52,15 +52,15 @@ static void BuildClientPath(char* path_to_so, int path_len, const char* so_name) | |||
snprintf(path_to_so, path_len, ADDON_DIR "/%s.dll", so_name); | |||
} | |||
static void PrintLoadError(const char* so_name) | |||
{ | |||
static void PrintLoadError(const char* so_name) | |||
{ | |||
// Retrieve the system error message for the last-error code | |||
LPVOID lpMsgBuf; | |||
LPVOID lpDisplayBuf; | |||
DWORD dw = GetLastError(); | |||
DWORD dw = GetLastError(); | |||
FormatMessage( | |||
FORMAT_MESSAGE_ALLOCATE_BUFFER | | |||
FORMAT_MESSAGE_ALLOCATE_BUFFER | | |||
FORMAT_MESSAGE_FROM_SYSTEM | | |||
FORMAT_MESSAGE_IGNORE_INSERTS, | |||
NULL, | |||
@@ -70,12 +70,12 @@ static void PrintLoadError(const char* so_name) | |||
0, NULL ); | |||
// Display the error message and exit the process | |||
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, | |||
(lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)so_name) + 40) * sizeof(TCHAR)); | |||
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, | |||
(lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)so_name) + 40) * sizeof(TCHAR)); | |||
_snprintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), | |||
TEXT("error loading %s err = %s"), so_name, lpMsgBuf); | |||
jack_error((LPCTSTR)lpDisplayBuf); | |||
TEXT("error loading %s err = %s"), so_name, lpMsgBuf); | |||
jack_error((LPCTSTR)lpDisplayBuf); | |||
LocalFree(lpMsgBuf); | |||
LocalFree(lpDisplayBuf); | |||
@@ -145,7 +145,7 @@ int JackInternalClient::Open(const char* server_name, const char* name, jack_opt | |||
jack_error("Cannot open client name = %s", name_res); | |||
goto error; | |||
} | |||
SetupDriverSync(false); | |||
return 0; | |||
@@ -219,7 +219,7 @@ int JackLoadableInternalClient::Open(const char* server_name, const char* name, | |||
JackInternalClient::Close(); | |||
fFinish = NULL; | |||
} | |||
} | |||
} | |||
return res; | |||
} | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2008 Grame | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
@@ -22,7 +22,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackEngineControl.h" | |||
#include "JackClientControl.h" | |||
#include "JackGraphManager.h" | |||
#include "driver_interface.h" | |||
#include "JackDriverLoader.h" | |||
#include "JackThreadedDriver.h" | |||
#include "JackWaitThreadedDriver.h" | |||
@@ -36,22 +35,21 @@ namespace Jack | |||
{ | |||
JackNetDriver::JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, | |||
const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, const char* net_name ) | |||
: JackAudioDriver ( name, alias, engine, table ) | |||
: JackAudioDriver ( name, alias, engine, table ), fSocket ( ip, port ) | |||
{ | |||
fMulticastIP = new char[strlen ( ip ) + 1]; | |||
strcpy ( fMulticastIP, ip ); | |||
fUDPPort = port; | |||
fParams.fMtu = mtu; | |||
fParams.fSendMidiChannels = midi_input_ports; | |||
fParams.fReturnMidiChannels = midi_output_ports; | |||
strcpy ( fParams.fName, net_name ); | |||
fSockfd = 0; | |||
strcpy ( fParams.fName, net_name ); | |||
fSocket.GetName ( fParams.fSlaveNetName ); | |||
} | |||
JackNetDriver::~JackNetDriver() | |||
{ | |||
if ( fSockfd ) | |||
close ( fSockfd ); | |||
fSocket.Close(); | |||
SocketAPIEnd(); | |||
delete fNetAudioCaptureBuffer; | |||
delete fNetAudioPlaybackBuffer; | |||
delete fNetMidiCaptureBuffer; | |||
@@ -91,14 +89,15 @@ namespace Jack | |||
bool JackNetDriver::Init() | |||
{ | |||
jack_log ( "JackNetDriver::Init()" ); | |||
if ( fSockfd ) | |||
//new loading, but existing socket, restart the driver | |||
if ( fSocket.IsSocket() ) | |||
Restart(); | |||
//set the parameters to send | |||
strcpy ( fParams.fPacketType, "params" ); | |||
fParams.fProtocolVersion = 'a'; | |||
SetPacketType ( &fParams, SLAVE_AVAILABLE ); | |||
gethostname ( fParams.fSlaveNetName, 255 ); | |||
fParams.fSendAudioChannels = fCaptureChannels; | |||
fParams.fReturnAudioChannels = fPlaybackChannels; | |||
@@ -111,10 +110,10 @@ namespace Jack | |||
do | |||
{ | |||
status = GetNetMaster(); | |||
if ( status == SOCKET_ERROR ) | |||
if ( status == NET_SOCKET_ERROR ) | |||
return false; | |||
} | |||
while ( status != CONNECTED ); | |||
while ( status != NET_CONNECTED ); | |||
//then tell the master we are ready | |||
jack_info ( "Initializing connection with %s...", fParams.fMasterNetName ); | |||
@@ -122,7 +121,7 @@ namespace Jack | |||
if ( status == NET_ERROR ) | |||
return false; | |||
} | |||
while ( status != ROLLING ); | |||
while ( status != NET_ROLLING ); | |||
//driver parametering | |||
if ( SetParams() ) | |||
@@ -141,62 +140,40 @@ namespace Jack | |||
{ | |||
jack_log ( "JackNetDriver::GetNetMaster()" ); | |||
//utility | |||
session_params_t params; | |||
struct sockaddr_in mcast_addr, listen_addr; | |||
struct timeval rcv_timeout; | |||
rcv_timeout.tv_sec = 2; | |||
rcv_timeout.tv_usec = 0; | |||
socklen_t addr_len = sizeof ( socket_address_t ); | |||
session_params_t params; | |||
int ms_timeout = 2000; | |||
int rx_bytes = 0; | |||
//set the multicast address | |||
mcast_addr.sin_family = AF_INET; | |||
mcast_addr.sin_port = htons ( fUDPPort ); | |||
inet_aton ( fMulticastIP, &mcast_addr.sin_addr ); | |||
memset ( &mcast_addr.sin_zero, 0, 8 ); | |||
//set the listening address | |||
listen_addr.sin_family = AF_INET; | |||
listen_addr.sin_port = htons ( fUDPPort ); | |||
listen_addr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &listen_addr.sin_zero, 0, 8 ); | |||
//set the master address family | |||
fMasterAddr.sin_family = AF_INET; | |||
//socket | |||
if ( fSockfd ) | |||
close ( fSockfd ); | |||
if ( ( fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ) ) < 0 ) | |||
if ( fSocket.NewSocket() == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Fatal error : network unreachable - %s", strerror ( errno ) ); | |||
return SOCKET_ERROR; | |||
jack_error ( "Fatal error : network unreachable - %s", StrError ( NET_ERROR_CODE ) ); | |||
return NET_SOCKET_ERROR; | |||
} | |||
//bind the socket | |||
if ( bind ( fSockfd, reinterpret_cast<socket_address_t*> ( &listen_addr ), addr_len ) < 0 ) | |||
jack_error ( "Can't bind the socket : %s", strerror ( errno ) ); | |||
if ( fSocket.Bind() == SOCKET_ERROR ) | |||
jack_error ( "Can't bind the socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
//timeout on receive | |||
setsockopt ( fSockfd, SOL_SOCKET, SO_RCVTIMEO, &rcv_timeout, sizeof ( rcv_timeout ) ); | |||
//timeout on receive | |||
if ( fSocket.SetTimeOut ( ms_timeout ) == SOCKET_ERROR ) | |||
jack_error ( "Can't set timeout : %s", StrError ( NET_ERROR_CODE ) ); | |||
//send 'AVAILABLE' until 'SLAVE_SETUP' received | |||
jack_info ( "Waiting for a master..." ); | |||
do | |||
{ | |||
//send 'available' | |||
if ( sendto ( fSockfd, &fParams, sizeof ( session_params_t ), 0, | |||
reinterpret_cast<socket_address_t*> ( &mcast_addr ), addr_len ) < 0 ) | |||
jack_error ( "Error in data send : %s", strerror ( errno ) ); | |||
if ( fSocket.SendTo ( &fParams, sizeof ( session_params_t ), 0, fMulticastIP ) == SOCKET_ERROR ) | |||
jack_error ( "Error in data send : %s", StrError ( NET_ERROR_CODE ) ); | |||
//filter incoming packets : don't exit while receiving wrong packets | |||
do | |||
{ | |||
rx_bytes = recvfrom ( fSockfd, ¶ms, sizeof ( session_params_t ), 0, | |||
reinterpret_cast<socket_address_t*> ( &fMasterAddr ), &addr_len ); | |||
if ( ( rx_bytes < 0 ) && ( errno != EAGAIN ) ) | |||
rx_bytes = fSocket.CatchHost ( ¶ms, sizeof ( session_params_t ), 0 ); | |||
if ( ( rx_bytes == SOCKET_ERROR ) && ( fSocket.GetError() != NET_NO_DATA ) ) | |||
{ | |||
jack_error ( "Can't receive : %s", strerror ( errno ) ); | |||
return RECV_ERROR; | |||
jack_error ( "Can't receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
return NET_RECV_ERROR; | |||
} | |||
} | |||
while ( ( rx_bytes > 0 ) && strcmp ( params.fPacketType, fParams.fPacketType ) ); | |||
@@ -204,16 +181,16 @@ namespace Jack | |||
while ( ( GetPacketType ( ¶ms ) != SLAVE_SETUP ) ); | |||
//connect the socket | |||
if ( connect ( fSockfd, reinterpret_cast<socket_address_t*> ( &fMasterAddr ), sizeof ( socket_address_t ) ) < 0 ) | |||
if ( fSocket.Connect() == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Error in connect : %s", strerror ( errno ) ); | |||
return CONNECT_ERROR; | |||
jack_error ( "Error in connect : %s", StrError ( NET_ERROR_CODE ) ); | |||
return NET_CONNECT_ERROR; | |||
} | |||
//everything is OK, copy parameters and return | |||
fParams = params; | |||
return CONNECTED; | |||
return NET_CONNECTED; | |||
} | |||
net_status_t JackNetDriver::SendMasterStartSync() | |||
@@ -221,18 +198,17 @@ namespace Jack | |||
jack_log ( "JackNetDriver::GetNetMasterStartSync()" ); | |||
//tell the master to start | |||
SetPacketType ( &fParams, START_MASTER ); | |||
if ( send ( fSockfd, &fParams, sizeof ( session_params_t ), 0 ) < 0 ) | |||
if ( fSocket.Send ( &fParams, sizeof ( session_params_t ), 0 ) == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Error in send : %s", strerror ( errno ) ); | |||
return ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) ? NET_ERROR : SEND_ERROR; | |||
jack_error ( "Error in send : %s", StrError ( NET_ERROR_CODE ) ); | |||
return ( fSocket.GetError() == NET_CONN_ERROR ) ? NET_ERROR : NET_SEND_ERROR; | |||
} | |||
return ROLLING; | |||
return NET_ROLLING; | |||
} | |||
void JackNetDriver::Restart() | |||
{ | |||
jack_info ( "Restarting driver..." ); | |||
close ( fSockfd ); | |||
delete[] fTxBuffer; | |||
delete[] fRxBuffer; | |||
delete fNetAudioCaptureBuffer; | |||
@@ -320,14 +296,16 @@ namespace Jack | |||
jack_port_id_t port_id; | |||
char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; | |||
char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; | |||
unsigned long port_flags; | |||
unsigned long port_flags; | |||
int audio_port_index; | |||
uint midi_port_index; | |||
//audio | |||
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal; | |||
for ( int port_index = 0; port_index < fCaptureChannels; port_index++ ) | |||
for ( audio_port_index = 0; audio_port_index < fCaptureChannels; audio_port_index++ ) | |||
{ | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:capture_%d", fClientControl.fName, port_index + 1 ); | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, audio_port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:capture_%d", fClientControl.fName, audio_port_index + 1 ); | |||
if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, | |||
static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT ) | |||
{ | |||
@@ -337,14 +315,14 @@ namespace Jack | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetAlias ( alias ); | |||
port->SetLatency ( fEngineControl->fBufferSize + fCaptureLatency ); | |||
fCapturePortList[port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fCapturePortList[%d] port_index = %ld", port_index, port_id ); | |||
fCapturePortList[audio_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fCapturePortList[%d] audio_port_index = %ld", audio_port_index, port_id ); | |||
} | |||
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; | |||
for ( int port_index = 0; port_index < fPlaybackChannels; port_index++ ) | |||
for ( audio_port_index = 0; audio_port_index < fPlaybackChannels; audio_port_index++ ) | |||
{ | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:playback_%d",fClientControl.fName, port_index + 1 ); | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, audio_port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:playback_%d",fClientControl.fName, audio_port_index + 1 ); | |||
if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, | |||
static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT ) | |||
{ | |||
@@ -354,38 +332,38 @@ namespace Jack | |||
port = fGraphManager->GetPort ( port_id ); | |||
port->SetAlias ( alias ); | |||
port->SetLatency ( fEngineControl->fBufferSize + ( ( fEngineControl->fSyncMode ) ? 0 : fEngineControl->fBufferSize ) + fPlaybackLatency ); | |||
fPlaybackPortList[port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fPlaybackPortList[%d] port_index = %ld", port_index, port_id ); | |||
fPlaybackPortList[audio_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fPlaybackPortList[%d] audio_port_index = %ld", audio_port_index, port_id ); | |||
} | |||
//midi | |||
port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal; | |||
for ( uint port_index = 0; port_index < fParams.fSendMidiChannels; port_index++ ) | |||
for ( midi_port_index = 0; midi_port_index < fParams.fSendMidiChannels; midi_port_index++ ) | |||
{ | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:midi_capture_%d", fClientControl.fName, port_index + 1 ); | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, midi_port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:midi_capture_%d", fClientControl.fName, midi_port_index + 1 ); | |||
if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, | |||
static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT ) | |||
{ | |||
jack_error ( "driver: cannot register port for %s", name ); | |||
return -1; | |||
} | |||
fMidiCapturePortList[port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiCapturePortList[%d] port_index = %ld", port_index, port_id ); | |||
fMidiCapturePortList[midi_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiCapturePortList[%d] midi_port_index = %ld", midi_port_index, port_id ); | |||
} | |||
port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; | |||
for ( uint port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++ ) | |||
for ( midi_port_index = 0; midi_port_index < fParams.fReturnMidiChannels; midi_port_index++ ) | |||
{ | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:midi_playback_%d", fClientControl.fName, port_index + 1 ); | |||
snprintf ( alias, sizeof ( alias ) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, midi_port_index + 1 ); | |||
snprintf ( name, sizeof ( name ) - 1, "%s:midi_playback_%d", fClientControl.fName, midi_port_index + 1 ); | |||
if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, | |||
static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT ) | |||
{ | |||
jack_error ( "driver: cannot register port for %s", name ); | |||
return -1; | |||
} | |||
fMidiPlaybackPortList[port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] port_index = %ld", port_index, port_id ); | |||
fMidiPlaybackPortList[midi_port_index] = port_id; | |||
jack_log ( "JackNetDriver::AllocPorts() fMidiPlaybackPortList[%d] midi_port_index = %ld", midi_port_index, port_id ); | |||
} | |||
return 0; | |||
@@ -393,15 +371,17 @@ namespace Jack | |||
int JackNetDriver::FreePorts() | |||
{ | |||
jack_log ( "JackNetDriver::FreePorts" ); | |||
for ( int port_index = 0; port_index < fCaptureChannels; port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fCapturePortList[port_index] ); | |||
for ( int port_index = 0; port_index < fPlaybackChannels; port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fPlaybackPortList[port_index] ); | |||
for ( uint port_index = 0; port_index < fParams.fSendMidiChannels; port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fMidiCapturePortList[port_index] ); | |||
for ( uint port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fMidiPlaybackPortList[port_index] ); | |||
jack_log ( "JackNetDriver::FreePorts" ); | |||
int audio_port_index; | |||
uint midi_port_index; | |||
for ( audio_port_index = 0; audio_port_index < fCaptureChannels; audio_port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fCapturePortList[audio_port_index] ); | |||
for ( audio_port_index = 0; audio_port_index < fPlaybackChannels; audio_port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fPlaybackPortList[audio_port_index] ); | |||
for ( midi_port_index = 0; midi_port_index < fParams.fSendMidiChannels; midi_port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fMidiCapturePortList[midi_port_index] ); | |||
for ( midi_port_index = 0; midi_port_index < fParams.fReturnMidiChannels; midi_port_index++ ) | |||
fGraphManager->ReleasePort ( fClientControl.fRefNum, fMidiPlaybackPortList[midi_port_index] ); | |||
return 0; | |||
} | |||
@@ -418,21 +398,21 @@ namespace Jack | |||
int JackNetDriver::Recv ( size_t size, int flags ) | |||
{ | |||
int rx_bytes; | |||
if ( ( rx_bytes = recv ( fSockfd, fRxBuffer, size, flags ) ) < 0 ) | |||
if ( ( rx_bytes = fSocket.Recv ( fRxBuffer, size, flags ) ) == SOCKET_ERROR ) | |||
{ | |||
if ( errno == EAGAIN ) | |||
net_error_t error = fSocket.GetError(); | |||
if ( error == NET_NO_DATA ) | |||
{ | |||
jack_error ( "No incoming data, is the master still running ?" ); | |||
return 0; | |||
} | |||
else if ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) | |||
{ | |||
jack_error ( "Fatal error : %s.", strerror ( errno ) ); | |||
throw JackDriverException(); | |||
else if ( error == NET_CONN_ERROR ) | |||
{ | |||
throw JackDriverException ( "Connection lost." ); | |||
} | |||
else | |||
{ | |||
jack_error ( "Error in receive : %s", strerror ( errno ) ); | |||
jack_error ( "Error in receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
return 0; | |||
} | |||
} | |||
@@ -442,15 +422,15 @@ namespace Jack | |||
int JackNetDriver::Send ( size_t size, int flags ) | |||
{ | |||
int tx_bytes; | |||
if ( ( tx_bytes = send ( fSockfd, fTxBuffer, size, flags ) ) < 0 ) | |||
if ( ( tx_bytes = fSocket.Send ( fTxBuffer, size, flags ) ) == SOCKET_ERROR ) | |||
{ | |||
if ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) | |||
net_error_t error = fSocket.GetError(); | |||
if ( error == NET_CONN_ERROR ) | |||
{ | |||
jack_error ( "Fatal error : %s.", strerror ( errno ) ); | |||
throw JackDriverException(); | |||
throw JackDriverException ( "Connection lost." ); | |||
} | |||
else | |||
jack_error ( "Error in send : %s", strerror ( errno ) ); | |||
jack_error ( "Error in send : %s", StrError ( NET_ERROR_CODE ) ); | |||
} | |||
return tx_bytes; | |||
} | |||
@@ -462,18 +442,21 @@ namespace Jack | |||
int rx_bytes; | |||
uint recvd_midi_pckt = 0; | |||
packet_header_t* rx_head = reinterpret_cast<packet_header_t*> ( fRxBuffer ); | |||
fRxHeader.fIsLastPckt = 'n'; | |||
fRxHeader.fIsLastPckt = 'n'; | |||
uint midi_port_index; | |||
int audio_port_index; | |||
//buffers | |||
for ( uint port_index = 0; port_index < fParams.fSendMidiChannels; port_index++ ) | |||
fNetMidiCaptureBuffer->fPortBuffer[port_index] = GetMidiInputBuffer ( port_index ); | |||
for ( int port_index = 0; port_index < fCaptureChannels; port_index++ ) | |||
fNetAudioCaptureBuffer->fPortBuffer[port_index] = GetInputBuffer ( port_index ); | |||
for ( midi_port_index = 0; midi_port_index < fParams.fSendMidiChannels; midi_port_index++ ) | |||
fNetMidiCaptureBuffer->fPortBuffer[midi_port_index] = GetMidiInputBuffer ( midi_port_index ); | |||
for ( audio_port_index = 0; audio_port_index < fCaptureChannels; audio_port_index++ ) | |||
fNetAudioCaptureBuffer->fPortBuffer[audio_port_index] = GetInputBuffer ( audio_port_index ); | |||
//receive sync (launch the cycle) | |||
do | |||
{ | |||
if ( ( rx_bytes = Recv ( sizeof ( packet_header_t ), 0 ) ) < 1 ) | |||
rx_bytes = Recv ( sizeof ( packet_header_t ), 0 ); | |||
if ( ( rx_bytes == 0 ) || ( rx_bytes == SOCKET_ERROR ) ) | |||
return rx_bytes; | |||
} | |||
while ( !rx_bytes && ( rx_head->fDataType != 's' ) ); | |||
@@ -493,14 +476,14 @@ namespace Jack | |||
switch ( rx_head->fDataType ) | |||
{ | |||
case 'm': //midi | |||
rx_bytes = Recv ( rx_bytes, MSG_DONTWAIT ); | |||
rx_bytes = Recv ( rx_bytes, 0 ); | |||
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; | |||
fNetMidiCaptureBuffer->RenderFromNetwork ( rx_head->fSubCycle, rx_bytes - sizeof ( packet_header_t ) ); | |||
if ( ++recvd_midi_pckt == rx_head->fNMidiPckt ) | |||
fNetMidiCaptureBuffer->RenderToJackPorts(); | |||
break; | |||
case 'a': //audio | |||
rx_bytes = Recv ( fAudioRxLen, MSG_DONTWAIT ); | |||
rx_bytes = Recv ( fAudioRxLen, 0 ); | |||
if ( !IsNextPacket ( &fRxHeader, rx_head, fNSubProcess ) ) | |||
jack_error ( "Packet(s) missing..." ); | |||
fRxHeader.fCycle = rx_head->fCycle; | |||
@@ -526,13 +509,15 @@ namespace Jack | |||
int tx_bytes, copy_size; | |||
fTxHeader.fCycle = fRxHeader.fCycle; | |||
fTxHeader.fSubCycle = 0; | |||
fTxHeader.fIsLastPckt = 'n'; | |||
fTxHeader.fIsLastPckt = 'n'; | |||
uint midi_port_index; | |||
int audio_port_index; | |||
//buffers | |||
for ( uint port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++ ) | |||
fNetMidiPlaybackBuffer->fPortBuffer[port_index] = GetMidiOutputBuffer ( port_index ); | |||
for ( int port_index = 0; port_index < fPlaybackChannels; port_index++ ) | |||
fNetAudioPlaybackBuffer->fPortBuffer[port_index] = GetOutputBuffer ( port_index ); | |||
for ( midi_port_index = 0; midi_port_index < fParams.fReturnMidiChannels; midi_port_index++ ) | |||
fNetMidiPlaybackBuffer->fPortBuffer[midi_port_index] = GetMidiOutputBuffer ( midi_port_index ); | |||
for ( audio_port_index = 0; audio_port_index < fPlaybackChannels; audio_port_index++ ) | |||
fNetAudioPlaybackBuffer->fPortBuffer[audio_port_index] = GetOutputBuffer ( audio_port_index ); | |||
//midi | |||
if ( fParams.fReturnMidiChannels ) | |||
@@ -649,10 +634,15 @@ namespace Jack | |||
} | |||
EXPORT Jack::JackDriverClientInterface* driver_initialize ( Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params ) | |||
{ | |||
{ | |||
if ( SocketAPIInit() < 0 ) | |||
{ | |||
jack_error ( "Can't init Socket API, exiting..." ); | |||
return NULL; | |||
} | |||
const char* multicast_ip = DEFAULT_MULTICAST_IP; | |||
char name[JACK_CLIENT_NAME_SIZE]; | |||
gethostname ( name, JACK_CLIENT_NAME_SIZE ); | |||
GetHostName ( name, JACK_CLIENT_NAME_SIZE ); | |||
int udp_port = DEFAULT_PORT; | |||
int mtu = 1500; | |||
jack_nframes_t period_size = 128; | |||
@@ -697,7 +687,8 @@ namespace Jack | |||
} | |||
Jack::JackDriverClientInterface* driver = new Jack::JackWaitThreadedDriver ( | |||
new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, mtu, midi_input_ports, midi_output_ports, name ) ); | |||
new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, mtu, | |||
midi_input_ports, midi_output_ports, name ) ); | |||
if ( driver->Open ( period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports, | |||
monitor, "from_master_", "to_master_", 0, 0 ) == 0 ) | |||
return driver; | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2008 Grame | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
@@ -31,9 +31,7 @@ namespace Jack | |||
private: | |||
session_params_t fParams; | |||
char* fMulticastIP; | |||
int fUDPPort; | |||
int fSockfd; | |||
struct sockaddr_in fMasterAddr; | |||
JackNetSocket fSocket; | |||
uint fNSubProcess; | |||
jack_port_id_t* fMidiCapturePortList; | |||
@@ -1,5 +1,5 @@ | |||
/* | |||
Copyright (C) 2008 Grame | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
@@ -30,34 +30,33 @@ namespace Jack | |||
{ | |||
//JackNetMaster****************************************************************************************************** | |||
JackNetMaster::JackNetMaster ( JackNetMasterManager* manager, session_params_t& params, struct sockaddr_in& address, struct sockaddr_in& mcast_addr ) | |||
JackNetMaster::JackNetMaster ( JackNetMasterManager* manager, session_params_t& params ) : fSocket() | |||
{ | |||
jack_log ( "JackNetMaster::JackNetMaster" ); | |||
//settings | |||
fMasterManager = manager; | |||
fParams = params; | |||
fAddr = address; | |||
fMcastAddr = mcast_addr; | |||
fSocket.CopyParams ( &fMasterManager->fSocket ); | |||
fNSubProcess = fParams.fPeriodSize / fParams.fFramesPerPacket; | |||
fClientName = const_cast<char*> ( fParams.fName ); | |||
fNetJumpCnt = 0; | |||
fJackClient = NULL; | |||
fSockfd = 0; | |||
fRunning = false; | |||
fRunning = false; | |||
uint port_index; | |||
//jack audio ports | |||
fAudioCapturePorts = new jack_port_t* [fParams.fSendAudioChannels]; | |||
for ( uint port_index = 0; port_index < fParams.fSendAudioChannels; port_index++ ) | |||
for ( port_index = 0; port_index < fParams.fSendAudioChannels; port_index++ ) | |||
fAudioCapturePorts[port_index] = NULL; | |||
fAudioPlaybackPorts = new jack_port_t* [fParams.fReturnAudioChannels]; | |||
for ( uint port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++ ) | |||
for ( port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++ ) | |||
fAudioPlaybackPorts[port_index] = NULL; | |||
//jack midi ports | |||
fMidiCapturePorts = new jack_port_t* [fParams.fSendMidiChannels]; | |||
for ( uint port_index = 0; port_index < fParams.fSendMidiChannels; port_index++ ) | |||
for ( port_index = 0; port_index < fParams.fSendMidiChannels; port_index++ ) | |||
fMidiCapturePorts[port_index] = NULL; | |||
fMidiPlaybackPorts = new jack_port_t* [fParams.fReturnMidiChannels]; | |||
for ( uint port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++ ) | |||
for ( port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++ ) | |||
fMidiPlaybackPorts[port_index] = NULL; | |||
//TX header init | |||
@@ -108,8 +107,7 @@ namespace Jack | |||
FreePorts(); | |||
jack_client_close ( fJackClient ); | |||
} | |||
if ( fSockfd ) | |||
close ( fSockfd ); | |||
fSocket.Close(); | |||
delete fNetAudioCaptureBuffer; | |||
delete fNetAudioPlaybackBuffer; | |||
delete fNetMidiCaptureBuffer; | |||
@@ -126,27 +124,25 @@ namespace Jack | |||
{ | |||
jack_log ( "JackNetMaster::Init, ID %u.", fParams.fID ); | |||
session_params_t params; | |||
struct timeval timeout; | |||
timeout.tv_sec = 1; | |||
timeout.tv_usec = 0; | |||
size_t attempt = 0; | |||
int msec_timeout = 1000; | |||
uint attempt = 0; | |||
int rx_bytes = 0; | |||
//socket | |||
if ( ( fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ) ) < 0 ) | |||
if ( fSocket.NewSocket() == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't create socket : %s", strerror ( errno ) ); | |||
jack_error ( "Can't create socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
return false; | |||
} | |||
//timeout on receive (for init) | |||
if ( setsockopt ( fSockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof ( timeout ) ) < 0 ) | |||
jack_error ( "Can't set timeout : %s", strerror ( errno ) ); | |||
if ( fSocket.SetTimeOut ( msec_timeout ) < 0 ) | |||
jack_error ( "Can't set timeout : %s", StrError ( NET_ERROR_CODE ) ); | |||
//connect | |||
if ( connect ( fSockfd, reinterpret_cast<sockaddr*> ( &fAddr ), sizeof ( struct sockaddr ) ) < 0 ) | |||
if ( fSocket.Connect() == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't connect : %s", strerror ( errno ) ); | |||
jack_error ( "Can't connect : %s", StrError ( NET_ERROR_CODE ) ); | |||
return false; | |||
} | |||
@@ -155,9 +151,9 @@ namespace Jack | |||
do | |||
{ | |||
SetPacketType ( &fParams, SLAVE_SETUP ); | |||
if ( send ( fSockfd, &fParams, sizeof ( session_params_t ), 0 ) < 0 ) | |||
jack_error ( "Error in send : ", strerror ( errno ) ); | |||
if ( ( ( rx_bytes = recv ( fSockfd, ¶ms, sizeof ( session_params_t ), 0 ) ) < 0 ) && ( errno != EAGAIN ) ) | |||
if ( fSocket.Send ( &fParams, sizeof ( session_params_t ), 0 ) == SOCKET_ERROR ) | |||
jack_error ( "Error in send : ", StrError ( NET_ERROR_CODE ) ); | |||
if ( ( ( rx_bytes = fSocket.Recv ( ¶ms, sizeof ( session_params_t ), 0 ) ) == SOCKET_ERROR ) && ( fSocket.GetError() != NET_NO_DATA ) ) | |||
{ | |||
jack_error ( "Problem with network." ); | |||
return false; | |||
@@ -171,9 +167,9 @@ namespace Jack | |||
} | |||
//set the new timeout for the socket | |||
if ( SetRxTimeout ( &fSockfd, &fParams ) < 0 ) | |||
if ( SetRxTimeout ( &fSocket, &fParams ) == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't set rx timeout : %s", strerror ( errno ) ); | |||
jack_error ( "Can't set rx timeout : %s", StrError ( NET_ERROR_CODE ) ); | |||
return false; | |||
} | |||
@@ -264,30 +260,30 @@ namespace Jack | |||
//send a 'multicast euthanasia request' - new socket is required on macosx | |||
jack_info ( "Exiting '%s'", fParams.fName ); | |||
SetPacketType ( &fParams, KILL_MASTER ); | |||
int mcast_sockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); | |||
if ( mcast_sockfd < 0 ) | |||
jack_error ( "Can't create socket : %s", strerror ( errno ) ); | |||
if ( sendto ( mcast_sockfd, &fParams, sizeof ( session_params_t ), 0, | |||
reinterpret_cast<socket_address_t*> ( &fMcastAddr ), sizeof ( socket_address_t ) ) < 0 ) | |||
jack_error ( "Can't send suicide request : %s", strerror ( errno ) ); | |||
close ( mcast_sockfd ); | |||
JackNetSocket mcast_socket ( fMasterManager->fMulticastIP, fSocket.GetPort() ); | |||
if ( mcast_socket.NewSocket() == SOCKET_ERROR ) | |||
jack_error ( "Can't create socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
if ( mcast_socket.SendTo ( &fParams, sizeof ( session_params_t ), 0, fMasterManager->fMulticastIP ) == SOCKET_ERROR ) | |||
jack_error ( "Can't send suicide request : %s", StrError ( NET_ERROR_CODE ) ); | |||
mcast_socket.Close(); | |||
} | |||
int JackNetMaster::Send ( char* buffer, size_t size, int flags ) | |||
{ | |||
int tx_bytes; | |||
if ( ( tx_bytes = send ( fSockfd, buffer, size, flags ) ) < 0 ) | |||
if ( ( tx_bytes = fSocket.Send ( buffer, size, flags ) ) == SOCKET_ERROR ) | |||
{ | |||
if ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) | |||
net_error_t error = fSocket.GetError(); | |||
if ( error == NET_CONN_ERROR ) | |||
{ | |||
//fatal connection issue, exit | |||
jack_error ( "'%s' : %s, please check network connection with '%s'.", | |||
fParams.fName, strerror ( errno ), fParams.fSlaveNetName ); | |||
fParams.fName, StrError ( NET_ERROR_CODE ), fParams.fSlaveNetName ); | |||
Exit(); | |||
return 0; | |||
} | |||
else | |||
jack_error ( "Error in send : %s", strerror ( errno ) ); | |||
jack_error ( "Error in send : %s", StrError ( NET_ERROR_CODE ) ); | |||
} | |||
return tx_bytes; | |||
} | |||
@@ -295,9 +291,10 @@ namespace Jack | |||
int JackNetMaster::Recv ( size_t size, int flags ) | |||
{ | |||
int rx_bytes; | |||
if ( ( rx_bytes = recv ( fSockfd, fRxBuffer, size, flags ) ) < 0 ) | |||
if ( ( rx_bytes = fSocket.Recv ( fRxBuffer, size, flags ) ) == SOCKET_ERROR ) | |||
{ | |||
if ( errno == EAGAIN ) | |||
net_error_t error = fSocket.GetError(); | |||
if ( error == NET_NO_DATA ) | |||
{ | |||
//too much receive failure, react... | |||
if ( ++fNetJumpCnt == 100 ) | |||
@@ -307,16 +304,16 @@ namespace Jack | |||
} | |||
return 0; | |||
} | |||
else if ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) | |||
else if ( error == NET_CONN_ERROR ) | |||
{ | |||
//fatal connection issue, exit | |||
jack_error ( "'%s' : %s, please check network connection with '%s'.", | |||
fParams.fName, strerror ( errno ), fParams.fSlaveNetName ); | |||
fParams.fName, StrError ( NET_ERROR_CODE ), fParams.fSlaveNetName ); | |||
Exit(); | |||
return 0; | |||
} | |||
else if ( errno != EAGAIN ) | |||
jack_error ( "Error in receive : %s", strerror ( errno ) ); | |||
else | |||
jack_error ( "Error in receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
} | |||
return rx_bytes; | |||
} | |||
@@ -360,7 +357,7 @@ namespace Jack | |||
if ( !fParams.fSendMidiChannels && !fParams.fSendAudioChannels ) | |||
fTxHeader.fIsLastPckt = 'y'; | |||
tx_bytes = Send ( reinterpret_cast<char*> ( &fTxHeader ), sizeof ( packet_header_t ), 0 ); | |||
if ( tx_bytes < 1 ) | |||
if ( ( tx_bytes == 0 ) || ( tx_bytes == SOCKET_ERROR ) ) | |||
return tx_bytes; | |||
//midi | |||
@@ -412,7 +409,7 @@ namespace Jack | |||
switch ( rx_head->fDataType ) | |||
{ | |||
case 'm': //midi | |||
rx_bytes = Recv ( rx_bytes, MSG_DONTWAIT ); | |||
rx_bytes = Recv ( rx_bytes, 0 ); | |||
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; | |||
fNetMidiPlaybackBuffer->RenderFromNetwork ( rx_head->fSubCycle, rx_bytes - sizeof ( packet_header_t ) ); | |||
if ( ++midi_recvd_pckt == rx_head->fNMidiPckt ) | |||
@@ -420,7 +417,7 @@ namespace Jack | |||
fNetJumpCnt = 0; | |||
break; | |||
case 'a': //audio | |||
rx_bytes = Recv ( fAudioRxLen, MSG_DONTWAIT ); | |||
rx_bytes = Recv ( fAudioRxLen, 0 ); | |||
if ( !IsNextPacket ( &fRxHeader, rx_head, fNSubProcess ) ) | |||
jack_error ( "Packet(s) missing from '%s'...", fParams.fName ); | |||
fRxHeader.fCycle = rx_head->fCycle; | |||
@@ -439,13 +436,13 @@ namespace Jack | |||
//JackNetMasterManager*********************************************************************************************** | |||
JackNetMasterManager::JackNetMasterManager ( jack_client_t* client ) | |||
JackNetMasterManager::JackNetMasterManager ( jack_client_t* client ) : fSocket() | |||
{ | |||
jack_log ( "JackNetMasterManager::JackNetMasterManager" ); | |||
fManagerClient = client; | |||
fManagerName = jack_get_client_name ( fManagerClient ); | |||
fMCastIP = DEFAULT_MULTICAST_IP; | |||
fUDPPort = DEFAULT_PORT; | |||
fMulticastIP = DEFAULT_MULTICAST_IP; | |||
fSocket.SetPort ( DEFAULT_PORT ); | |||
fGlobalID = 0; | |||
fRunning = true; | |||
@@ -460,7 +457,9 @@ namespace Jack | |||
Exit(); | |||
master_list_t::iterator it; | |||
for ( it = fMasterList.begin(); it != fMasterList.end(); it++ ) | |||
delete ( *it ); | |||
delete ( *it ); | |||
fSocket.Close(); | |||
SocketAPIEnd(); | |||
} | |||
void* JackNetMasterManager::NetManagerThread ( void* arg ) | |||
@@ -474,79 +473,58 @@ namespace Jack | |||
void JackNetMasterManager::Run() | |||
{ | |||
jack_log ( "JackNetMasterManager::Run" ); | |||
//utility variables | |||
socklen_t addr_len = sizeof ( socket_address_t ); | |||
char disable = 0; | |||
struct timeval timeout; | |||
timeout.tv_sec = 2; | |||
timeout.tv_usec = 0; | |||
//utility variables | |||
int msec_timeout = 2000; | |||
int attempt = 0; | |||
//network | |||
int mcast_sockfd; | |||
struct ip_mreq multicast_req; | |||
struct sockaddr_in mcast_addr; | |||
struct sockaddr_in response_addr; | |||
//data | |||
session_params_t params; | |||
int rx_bytes = 0; | |||
JackNetMaster* net_master; | |||
//init socket API (win32) | |||
if ( SocketAPIInit() < 0 ) | |||
{ | |||
jack_error ( "Can't init Socket API, exiting..." ); | |||
return; | |||
} | |||
//socket | |||
if ( ( mcast_sockfd = socket ( AF_INET, SOCK_DGRAM, 0 ) ) < 0 ) | |||
if ( fSocket.NewSocket() == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't create the network management input socket : %s", strerror ( errno ) ); | |||
jack_error ( "Can't create the network management input socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
return; | |||
} | |||
//set the multicast address | |||
mcast_addr.sin_family = AF_INET; | |||
mcast_addr.sin_port = htons ( fUDPPort ); | |||
if ( inet_aton ( fMCastIP, &mcast_addr.sin_addr ) < 0 ) | |||
//bind the socket to the local port | |||
if ( fSocket.Bind () == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Cant set multicast address : %s", strerror ( errno ) ); | |||
close ( mcast_sockfd ); | |||
return; | |||
} | |||
memset ( &mcast_addr.sin_zero, 0, 8 ); | |||
//bind the socket to the multicast address | |||
if ( bind ( mcast_sockfd, reinterpret_cast<socket_address_t *> ( &mcast_addr ), addr_len ) < 0 ) | |||
{ | |||
jack_error ( "Can't bind the network manager socket : %s", strerror ( errno ) ); | |||
close ( mcast_sockfd ); | |||
jack_error ( "Can't bind the network manager socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
fSocket.Close(); | |||
return; | |||
} | |||
//join multicast group | |||
inet_aton ( fMCastIP, &multicast_req.imr_multiaddr ); | |||
multicast_req.imr_interface.s_addr = htonl ( INADDR_ANY ); | |||
if ( setsockopt ( mcast_sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &multicast_req, sizeof ( multicast_req ) ) < 0 ) | |||
{ | |||
jack_error ( "Can't join multicast group : %s", strerror ( errno ) ); | |||
close ( mcast_sockfd ); | |||
return; | |||
} | |||
//disable local loop | |||
if ( setsockopt ( mcast_sockfd, IPPROTO_IP, IP_MULTICAST_LOOP, &disable, sizeof ( disable ) ) < 0 ) | |||
jack_error ( "Can't set multicast loop option : %s", strerror ( errno ) ); | |||
if ( fSocket.JoinMCastGroup ( fMulticastIP ) == SOCKET_ERROR ) | |||
jack_error ( "Can't join multicast group : %s", StrError ( NET_ERROR_CODE ) ); | |||
//local loop | |||
if ( fSocket.SetLocalLoop() == SOCKET_ERROR ) | |||
jack_error ( "Can't set local loop : %s", StrError ( NET_ERROR_CODE ) ); | |||
//set a timeout on the multicast receive (the thread can now be cancelled) | |||
if ( setsockopt ( mcast_sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof ( timeout ) ) < 0 ) | |||
jack_error ( "Can't set timeout : %s", strerror ( errno ) ); | |||
if ( fSocket.SetTimeOut ( msec_timeout ) == SOCKET_ERROR ) | |||
jack_error ( "Can't set timeout : %s", StrError ( NET_ERROR_CODE ) ); | |||
jack_info ( "Waiting for a slave..." ); | |||
//main loop, wait for data, deal with it and wait again | |||
do | |||
{ | |||
rx_bytes = recvfrom ( mcast_sockfd, ¶ms, sizeof ( session_params_t ), 0, | |||
reinterpret_cast<socket_address_t*> ( &response_addr ), &addr_len ); | |||
if ( ( rx_bytes < 0 ) && ( errno != EAGAIN ) ) | |||
rx_bytes = fSocket.CatchHost ( ¶ms, sizeof ( session_params_t ), 0 ); | |||
if ( ( rx_bytes == SOCKET_ERROR ) && ( fSocket.GetError() != NET_NO_DATA ) ) | |||
{ | |||
jack_error ( "Error in receive : %s", strerror ( errno ) ); | |||
jack_error ( "Error in receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
if ( ++attempt == 10 ) | |||
{ | |||
jack_error ( "Can't receive on the socket, exiting net manager." ); | |||
@@ -558,7 +536,7 @@ namespace Jack | |||
switch ( GetPacketType ( ¶ms ) ) | |||
{ | |||
case SLAVE_AVAILABLE: | |||
if ( ( net_master = MasterInit ( params, response_addr, mcast_addr ) ) ) | |||
if ( ( net_master = MasterInit ( params ) ) ) | |||
SessionParamsDisplay ( &net_master->fParams ); | |||
else | |||
jack_error ( "Can't init new net master..." ); | |||
@@ -574,22 +552,21 @@ namespace Jack | |||
} | |||
} | |||
while ( fRunning ); | |||
close ( mcast_sockfd ); | |||
} | |||
void JackNetMasterManager::Exit() | |||
{ | |||
jack_log ( "JackNetMasterManager::Exit" ); | |||
fRunning = false; | |||
pthread_join ( fManagerThread, NULL ); | |||
jack_client_stop_thread ( fManagerClient, fManagerThread ); | |||
jack_info ( "Exiting net manager..." ); | |||
} | |||
JackNetMaster* JackNetMasterManager::MasterInit ( session_params_t& params, struct sockaddr_in& address, struct sockaddr_in& mcast_addr ) | |||
JackNetMaster* JackNetMasterManager::MasterInit ( session_params_t& params ) | |||
{ | |||
jack_log ( "JackNetMasterManager::MasterInit, Slave : %s", params.fName ); | |||
//settings | |||
gethostname ( params.fMasterNetName, 255 ); | |||
fSocket.GetName ( params.fMasterNetName ); | |||
params.fID = ++fGlobalID; | |||
params.fSampleRate = jack_get_sample_rate ( fManagerClient ); | |||
params.fPeriodSize = jack_get_buffer_size ( fManagerClient ); | |||
@@ -598,7 +575,7 @@ namespace Jack | |||
SetSlaveName ( params ); | |||
//create a new master and add it to the list | |||
JackNetMaster* master = new JackNetMaster ( this, params, address, mcast_addr ); | |||
JackNetMaster* master = new JackNetMaster ( this, params ); | |||
if ( master->Init() ) | |||
{ | |||
fMasterList.push_back ( master ); | |||
@@ -37,9 +37,7 @@ namespace Jack | |||
JackNetMasterManager* fMasterManager; | |||
session_params_t fParams; | |||
struct sockaddr_in fAddr; | |||
struct sockaddr_in fMcastAddr; | |||
int fSockfd; | |||
JackNetSocket fSocket; | |||
uint fNSubProcess; | |||
int fNetJumpCnt; | |||
bool fRunning; | |||
@@ -76,7 +74,7 @@ namespace Jack | |||
int Recv ( size_t size, int flags ); | |||
int Process(); | |||
public: | |||
JackNetMaster ( JackNetMasterManager* manager, session_params_t& params, struct sockaddr_in& address, struct sockaddr_in& mcast_addr ); | |||
JackNetMaster ( JackNetMasterManager* manager, session_params_t& params ); | |||
~JackNetMaster (); | |||
}; | |||
@@ -85,21 +83,22 @@ namespace Jack | |||
class JackNetMasterManager | |||
{ | |||
friend class JackNetMaster; | |||
private: | |||
static void* NetManagerThread ( void* arg ); | |||
static int SetProcess ( jack_nframes_t nframes, void* arg ); | |||
jack_client_t* fManagerClient; | |||
const char* fManagerName; | |||
const char* fMCastIP; | |||
int fUDPPort; | |||
const char* fMulticastIP; | |||
JackNetSocket fSocket; | |||
pthread_t fManagerThread; | |||
master_list_t fMasterList; | |||
uint32_t fGlobalID; | |||
bool fRunning; | |||
void Run(); | |||
JackNetMaster* MasterInit ( session_params_t& params, struct sockaddr_in& address, struct sockaddr_in& mcast_addr ); | |||
JackNetMaster* MasterInit ( session_params_t& params ); | |||
master_list_it_t FindMaster ( uint32_t client_id ); | |||
void KillMaster ( session_params_t* params ); | |||
void SetSlaveName ( session_params_t& params ); | |||
@@ -0,0 +1,47 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackNetSocket__ | |||
#define __JackNetSocket__ | |||
#include "JackExports.h" | |||
#include "JackError.h" | |||
#include <cstdlib> | |||
#include <cstdio> | |||
#include <iostream> | |||
#include <errno.h> | |||
namespace Jack | |||
{ | |||
//get host name********************************* | |||
EXPORT int GetHostName ( char * name, int size ); | |||
//net errors *********************************** | |||
enum _net_error | |||
{ | |||
NET_CONN_ERROR = 10000, | |||
NET_OP_ERROR, | |||
NET_NO_DATA, | |||
NET_NO_ERROR | |||
}; | |||
typedef enum _net_error net_error_t; | |||
} | |||
#endif |
@@ -1,5 +1,5 @@ | |||
/* | |||
Copyright (C) 2008 Grame | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
@@ -18,7 +18,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackNetTool.h" | |||
#include "JackError.h" | |||
using namespace std; | |||
@@ -177,7 +176,7 @@ namespace Jack | |||
EXPORT void SessionParamsDisplay ( session_params_t* params ) | |||
{ | |||
jack_info ( "********************Params********************" ); | |||
jack_info ( "---->Network parameters of '%s'<----", params->fName ); | |||
jack_info ( "Protocol revision : %c", params->fProtocolVersion ); | |||
jack_info ( "MTU : %u", params->fMtu ); | |||
jack_info ( "Master name : %s", params->fMasterNetName ); | |||
@@ -190,8 +189,8 @@ namespace Jack | |||
jack_info ( "Frames per packet : %u", params->fFramesPerPacket ); | |||
jack_info ( "Packet per period : %u", params->fPeriodSize / params->fFramesPerPacket ); | |||
jack_info ( "Bitdepth (0 for float) : %u", params->fBitdepth ); | |||
jack_info ( "Name : %s", params->fName ); | |||
jack_info ( "**********************************************" ); | |||
jack_info ( "Name : %s", params->fName ); | |||
jack_info ( "---------------------------------------------" ); | |||
} | |||
EXPORT sync_packet_type_t GetPacketType ( session_params_t* params ) | |||
@@ -274,13 +273,43 @@ namespace Jack | |||
} | |||
// Utility ******************************************************************************************************* | |||
EXPORT int SocketAPIInit() | |||
{ | |||
#ifdef WIN32 | |||
WORD wVersionRequested = MAKEWORD ( 2, 2 ); | |||
WSADATA wsaData; | |||
if ( WSAStartup(wVersionRequested, &wsaData) != 0 ) | |||
{ | |||
jack_error ( "WSAStartup error : %s", strerror ( NET_ERROR_CODE ) ); | |||
return -1; | |||
} | |||
if ( LOBYTE ( wsaData.wVersion ) != 2 || HIBYTE ( wsaData.wVersion ) != 2 ) | |||
{ | |||
jack_error ( "Could not find a useable version of Winsock.dll\n" ); | |||
WSACleanup(); | |||
return -1; | |||
} | |||
#endif | |||
return 0; | |||
} | |||
EXPORT int SocketAPIEnd() | |||
{ | |||
#ifdef WIN32 | |||
return WSACleanup(); | |||
#endif | |||
return 0; | |||
} | |||
EXPORT jack_nframes_t SetFramesPerPacket ( session_params_t* params ) | |||
{ | |||
if ( !params->fSendAudioChannels && !params->fReturnAudioChannels ) | |||
return ( params->fFramesPerPacket = params->fPeriodSize ); | |||
size_t period = ( int ) powf ( 2.f, ( int ) log2 ( ( params->fMtu - sizeof ( packet_header_t ) ) | |||
/ ( max ( params->fReturnAudioChannels, params->fSendAudioChannels ) * sizeof ( sample_t ) ) ) ); | |||
size_t period = ( int ) powf ( 2.f, ( int ) ( log ( ( params->fMtu - sizeof ( packet_header_t ) ) | |||
/ ( max ( params->fReturnAudioChannels, params->fSendAudioChannels ) * sizeof ( sample_t ) ) ) / log ( 2 ) ) ); | |||
( period > params->fPeriodSize ) ? params->fFramesPerPacket = params->fPeriodSize : params->fFramesPerPacket = period; | |||
return params->fFramesPerPacket; | |||
} | |||
@@ -298,17 +327,12 @@ namespace Jack | |||
return npckt; | |||
} | |||
EXPORT int SetRxTimeout ( int* sockfd, session_params_t* params ) | |||
{ | |||
int ret; | |||
struct timeval timeout; | |||
float time = static_cast<float> ( params->fFramesPerPacket ) / static_cast<float> ( params->fSampleRate ); | |||
timeout.tv_sec = ( int ) time; | |||
float usec = 1.25 * ( time - timeout.tv_sec ) * 1000000; | |||
timeout.tv_usec = ( int ) usec; | |||
if ( ( ret = setsockopt ( *sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof ( timeout ) ) ) < 0 ) | |||
return ret; | |||
return timeout.tv_usec; | |||
EXPORT int SetRxTimeout ( JackNetSocket* socket, session_params_t* params ) | |||
{ | |||
//time in ms : 1,25 * 'one packet time' | |||
float time = 1250 * ( static_cast<float> ( params->fFramesPerPacket ) / static_cast<float> ( params->fSampleRate ) ); | |||
int ms = ( int ) time; | |||
return ( socket->SetTimeOut ( ms ) == SOCKET_ERROR ) ? SOCKET_ERROR : ms; | |||
} | |||
// Packet ******************************************************************************************************* | |||
@@ -1,5 +1,5 @@ | |||
/* | |||
Copyright (C) 2008 Grame | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
@@ -21,20 +21,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include "JackConstants.h" | |||
#include "JackMidiPort.h" | |||
#include "JackExports.h" | |||
#include "JackError.h" | |||
#include "JackPlatformNetSocket.h" | |||
#include <string> | |||
#include <algorithm> | |||
#include <cmath> | |||
#include <cstdlib> | |||
#include <cstdio> | |||
#include <iostream> | |||
#include <unistd.h> | |||
#include <sys/types.h> | |||
#include <sys/socket.h> | |||
#include <netdb.h> | |||
#include <netinet/in.h> | |||
#include <arpa/inet.h> | |||
#include <errno.h> | |||
namespace Jack | |||
{ | |||
@@ -44,7 +36,6 @@ namespace Jack | |||
typedef struct in_addr address_t; | |||
typedef jack_default_audio_sample_t sample_t; | |||
//session params ****************************************************************************** | |||
struct _session_params | |||
@@ -72,28 +63,27 @@ namespace Jack | |||
enum _net_status | |||
{ | |||
SOCKET_ERROR, | |||
CONNECT_ERROR, | |||
NET_SOCKET_ERROR = 0, | |||
NET_CONNECT_ERROR, | |||
NET_ERROR, | |||
SEND_ERROR, | |||
RECV_ERROR, | |||
CONNECTED, | |||
ROLLING | |||
NET_SEND_ERROR, | |||
NET_RECV_ERROR, | |||
NET_CONNECTED, | |||
NET_ROLLING | |||
}; | |||
typedef enum _net_status net_status_t; | |||
//sync packet type **************************************************************************** | |||
enum _sync_packet_type | |||
{ | |||
INVALID, //... | |||
INVALID = 0, //... | |||
SLAVE_AVAILABLE, //a slave is available | |||
SLAVE_SETUP, //slave configuration | |||
START_MASTER, //slave is ready, start master | |||
START_SLAVE, //master is ready, activate slave | |||
KILL_MASTER //master must stop | |||
KILL_MASTER //master must stop | |||
}; | |||
typedef enum _sync_packet_type sync_packet_type_t; | |||
@@ -116,9 +106,6 @@ namespace Jack | |||
char fFree[13]; //unused | |||
}; | |||
#ifndef __NetMidiBuffer__ | |||
#define __NetMidiBuffer__ | |||
//midi data *********************************************************************************** | |||
class EXPORT NetMidiBuffer | |||
@@ -148,13 +135,8 @@ namespace Jack | |||
int RenderToNetwork ( int subcycle, size_t total_size ); | |||
}; | |||
#endif | |||
// audio data ********************************************************************************* | |||
#ifndef __NetAudioBuffer__ | |||
#define __NetAudioBuffer__ | |||
class EXPORT NetAudioBuffer | |||
{ | |||
private: | |||
@@ -167,7 +149,7 @@ namespace Jack | |||
NetAudioBuffer ( session_params_t* params, uint32_t nports, char* net_buffer ); | |||
~NetAudioBuffer(); | |||
sample_t** fPortBuffer; | |||
sample_t** fPortBuffer; | |||
size_t GetSize(); | |||
//jack<->buffer | |||
@@ -175,10 +157,11 @@ namespace Jack | |||
void RenderToJackPorts ( int subcycle ); | |||
}; | |||
#endif | |||
//utility ************************************************************************************* | |||
//socket API management | |||
EXPORT int SocketAPIInit(); | |||
EXPORT int SocketAPIEnd(); | |||
//n<-->h functions | |||
EXPORT void SessionParamsHToN ( session_params_t* params ); | |||
EXPORT void SessionParamsNToH ( session_params_t* params ); | |||
@@ -197,7 +180,7 @@ namespace Jack | |||
//get the midi packet number for a given cycle | |||
EXPORT int GetNMidiPckt ( session_params_t* params, size_t data_size ); | |||
//set the recv timeout on a socket | |||
EXPORT int SetRxTimeout ( int* sockfd, session_params_t* params ); | |||
EXPORT int SetRxTimeout ( JackNetSocket* socket, session_params_t* params ); | |||
//check if 'next' packet is really the next after 'previous' | |||
EXPORT bool IsNextPacket ( packet_header_t* previous, packet_header_t* next, uint subcycles ); | |||
} |
@@ -0,0 +1,289 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackNetUnixSocket.h" | |||
namespace Jack | |||
{ | |||
//utility ********************************************************************************************************* | |||
int GetHostName ( char * name, int size ) | |||
{ | |||
if ( gethostname ( name, size) == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't get 'hostname' : %s", strerror ( NET_ERROR_CODE ) ); | |||
strcpy ( name, "default" ); | |||
return -1; | |||
} | |||
return 0; | |||
} | |||
//construct/destruct*********************************************************************************************** | |||
JackNetUnixSocket::JackNetUnixSocket() | |||
{ | |||
fSockfd = 0; | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
JackNetUnixSocket::JackNetUnixSocket ( const char* ip, int port ) | |||
{ | |||
fSockfd = 0; | |||
fPort = port; | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_port = htons ( port ); | |||
inet_aton ( ip, &fSendAddr.sin_addr ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_port = htons ( port ); | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
JackNetUnixSocket::~JackNetUnixSocket() | |||
{ | |||
Close(); | |||
} | |||
//socket*********************************************************************************************************** | |||
int JackNetUnixSocket::NewSocket() | |||
{ | |||
if ( fSockfd ) | |||
{ | |||
Close(); | |||
Reset(); | |||
} | |||
fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); | |||
return fSockfd; | |||
} | |||
int JackNetUnixSocket::Bind() | |||
{ | |||
return bind ( fSockfd, reinterpret_cast<socket_address_t*> ( &fRecvAddr ), sizeof ( socket_address_t ) ); | |||
} | |||
int JackNetUnixSocket::BindWith ( const char* ip ) | |||
{ | |||
int addr_conv = inet_aton ( ip, &fRecvAddr.sin_addr ); | |||
if ( addr_conv < 0 ) | |||
return addr_conv; | |||
return Bind(); | |||
} | |||
int JackNetUnixSocket::BindWith ( int port ) | |||
{ | |||
fRecvAddr.sin_port = htons ( port ); | |||
return Bind(); | |||
} | |||
int JackNetUnixSocket::Connect() | |||
{ | |||
return connect ( fSockfd, reinterpret_cast<socket_address_t*> ( &fSendAddr ), sizeof ( socket_address_t ) ); | |||
} | |||
int JackNetUnixSocket::ConnectTo ( const char* ip ) | |||
{ | |||
int addr_conv = inet_aton ( ip, &fSendAddr.sin_addr ); | |||
if ( addr_conv < 0 ) | |||
return addr_conv; | |||
return Connect(); | |||
} | |||
void JackNetUnixSocket::Close() | |||
{ | |||
if ( fSockfd ) | |||
close ( fSockfd ); | |||
fSockfd = 0; | |||
} | |||
void JackNetUnixSocket::Reset() | |||
{ | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_port = htons ( fPort ); | |||
fSendAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_port = htons ( fPort ); | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
bool JackNetUnixSocket::IsSocket() | |||
{ | |||
return ( fSockfd ) ? true : false; | |||
} | |||
//IP/PORT*********************************************************************************************************** | |||
void JackNetUnixSocket::SetPort ( int port ) | |||
{ | |||
fPort = port; | |||
fSendAddr.sin_port = htons ( port ); | |||
fRecvAddr.sin_port = htons ( port ); | |||
} | |||
int JackNetUnixSocket::GetPort() | |||
{ | |||
return fPort; | |||
} | |||
//address*********************************************************************************************************** | |||
int JackNetUnixSocket::SetAddress ( const char* ip, int port ) | |||
{ | |||
int addr_conv = inet_aton ( ip, &fSendAddr.sin_addr ); | |||
if ( addr_conv < 0 ) | |||
return addr_conv; | |||
fSendAddr.sin_port = htons ( port ); | |||
return 0; | |||
} | |||
char* JackNetUnixSocket::GetSendIP() | |||
{ | |||
return inet_ntoa ( fSendAddr.sin_addr ); | |||
} | |||
char* JackNetUnixSocket::GetRecvIP() | |||
{ | |||
return inet_ntoa ( fRecvAddr.sin_addr ); | |||
} | |||
//utility************************************************************************************************************ | |||
int JackNetUnixSocket::GetName ( char* name ) | |||
{ | |||
return gethostname ( name, 255 ); | |||
} | |||
int JackNetUnixSocket::JoinMCastGroup ( const char* ip ) | |||
{ | |||
struct ip_mreq multicast_req; | |||
inet_aton ( ip, &multicast_req.imr_multiaddr ); | |||
multicast_req.imr_interface.s_addr = htonl ( INADDR_ANY ); | |||
return SetOption ( IPPROTO_IP, IP_ADD_MEMBERSHIP, &multicast_req, sizeof ( multicast_req ) ); | |||
} | |||
void JackNetUnixSocket::CopyParams ( JackNetUnixSocket* socket ) | |||
{ | |||
fPort = socket->fPort; | |||
fSendAddr = socket->fSendAddr; | |||
fRecvAddr = socket->fRecvAddr; | |||
} | |||
//options************************************************************************************************************ | |||
int JackNetUnixSocket::SetOption ( int level, int optname, const void* optval, socklen_t optlen ) | |||
{ | |||
return setsockopt ( fSockfd, level, optname, optval, optlen ); | |||
} | |||
int JackNetUnixSocket::GetOption ( int level, int optname, void* optval, socklen_t* optlen ) | |||
{ | |||
return getsockopt ( fSockfd, level, optname, optval, optlen ); | |||
} | |||
//timeout************************************************************************************************************* | |||
int JackNetUnixSocket::SetTimeOut ( int& msec ) | |||
{ | |||
//negative timeout, or exceeding 10s, return | |||
if ( ( msec < 0 ) || ( msec > 10000 ) ) | |||
return -1; | |||
struct timeval timeout; | |||
//less than 1sec | |||
if ( msec < 1000 ) | |||
{ | |||
timeout.tv_sec = 0; | |||
timeout.tv_usec = msec * 1000; | |||
return SetOption ( SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof ( timeout ) ); | |||
} | |||
//more than 1sec | |||
if ( msec >= 1000 ) | |||
{ | |||
float sec = static_cast<float>( msec ) / 1000.0f; | |||
timeout.tv_sec = ( int ) sec; | |||
float usec = ( sec - timeout.tv_sec ) * 1000000; | |||
timeout.tv_usec = ( int ) usec; | |||
return SetOption ( SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof ( timeout ) ); | |||
} | |||
return -1; | |||
} | |||
//local loop********************************************************************************************************** | |||
int JackNetUnixSocket::SetLocalLoop() | |||
{ | |||
char disable = 0; | |||
return SetOption ( IPPROTO_IP, IP_MULTICAST_LOOP, &disable, sizeof ( disable ) ); | |||
} | |||
//network operations************************************************************************************************** | |||
int JackNetUnixSocket::SendTo ( const void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return sendto ( fSockfd, buffer, nbytes, flags, reinterpret_cast<socket_address_t*> ( &fSendAddr ), sizeof ( socket_address_t ) ); | |||
} | |||
int JackNetUnixSocket::SendTo ( const void* buffer, size_t nbytes, int flags, const char* ip ) | |||
{ | |||
int addr_conv = inet_aton ( ip, &fSendAddr.sin_addr ); | |||
if ( addr_conv < 1 ) | |||
return addr_conv; | |||
return SendTo ( buffer, nbytes, flags ); | |||
} | |||
int JackNetUnixSocket::Send ( const void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return send ( fSockfd, buffer, nbytes, flags ); | |||
} | |||
int JackNetUnixSocket::RecvFrom ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
socklen_t addr_len = sizeof ( socket_address_t ); | |||
return recvfrom ( fSockfd, buffer, nbytes, flags, reinterpret_cast<socket_address_t*> ( &fRecvAddr ), &addr_len ); | |||
} | |||
int JackNetUnixSocket::Recv ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return recv ( fSockfd, buffer, nbytes, flags ); | |||
} | |||
int JackNetUnixSocket::CatchHost ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
socklen_t addr_len = sizeof ( socket_address_t ); | |||
return recvfrom ( fSockfd, buffer, nbytes, flags, reinterpret_cast<socket_address_t*> ( &fSendAddr ), &addr_len ); | |||
} | |||
net_error_t JackNetUnixSocket::GetError() | |||
{ | |||
switch ( errno ) | |||
{ | |||
case EAGAIN: | |||
return NET_NO_DATA; | |||
case ECONNABORTED: | |||
return NET_CONN_ERROR; | |||
case ECONNREFUSED: | |||
return NET_CONN_ERROR; | |||
case ECONNRESET: | |||
return NET_CONN_ERROR; | |||
case EHOSTDOWN: | |||
return NET_CONN_ERROR; | |||
case EHOSTUNREACH: | |||
return NET_CONN_ERROR; | |||
default: | |||
return NET_OP_ERROR; | |||
} | |||
} | |||
} |
@@ -0,0 +1,101 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackNetUnixSocket__ | |||
#define __JackNetUnixSocket__ | |||
#include "JackNetSocket.h" | |||
#include <sys/types.h> | |||
#include <sys/socket.h> | |||
#include <netdb.h> | |||
#include <netinet/in.h> | |||
#include <arpa/inet.h> | |||
namespace Jack | |||
{ | |||
#define NET_ERROR_CODE errno | |||
#define SOCKET_ERROR -1 | |||
#define StrError strerror | |||
typedef struct sockaddr socket_address_t; | |||
typedef struct in_addr address_t; | |||
//JackNetUnixSocket******************************************** | |||
class EXPORT JackNetUnixSocket | |||
{ | |||
private: | |||
int fSockfd; | |||
int fPort; | |||
struct sockaddr_in fSendAddr; | |||
struct sockaddr_in fRecvAddr; | |||
public: | |||
JackNetUnixSocket(); | |||
JackNetUnixSocket ( const char* ip, int port ); | |||
~JackNetUnixSocket(); | |||
//socket management | |||
int NewSocket(); | |||
int Bind(); | |||
int BindWith ( const char* ip ); | |||
int BindWith ( int port ); | |||
int Connect(); | |||
int ConnectTo ( const char* ip ); | |||
void Close(); | |||
void Reset(); | |||
bool IsSocket(); | |||
//IP/PORT management | |||
void SetPort ( int port ); | |||
int GetPort(); | |||
//address management | |||
int SetAddress ( const char* ip, int port ); | |||
char* GetSendIP(); | |||
char* GetRecvIP(); | |||
//utility | |||
int GetName ( char* name ); | |||
int JoinMCastGroup ( const char* mcast_ip ); | |||
void CopyParams ( JackNetUnixSocket* socket ); | |||
//options management | |||
int SetOption ( int level, int optname, const void* optval, socklen_t optlen ); | |||
int GetOption ( int level, int optname, void* optval, socklen_t* optlen ); | |||
//timeout | |||
int SetTimeOut ( int& msec ); | |||
//local loop | |||
int SetLocalLoop(); | |||
//network operations | |||
int SendTo ( const void* buffer, size_t nbytes, int flags ); | |||
int SendTo ( const void* buffer, size_t nbytes, int flags, const char* ip ); | |||
int Send ( const void* buffer, size_t nbytes, int flags ); | |||
int RecvFrom ( void* buffer, size_t nbytes, int flags ); | |||
int Recv ( void* buffer, size_t nbytes, int flags ); | |||
int CatchHost ( void* buffer, size_t nbytes, int flags ); | |||
//error management | |||
net_error_t GetError(); | |||
}; | |||
} | |||
#endif |
@@ -0,0 +1,50 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackPlatformNetSocket__ | |||
#define __JackPlatformNetSocket__ | |||
#ifdef HAVE_CONFIG_H | |||
#include "config.h" | |||
#endif | |||
// OSX and LINUX | |||
#if defined(__APPLE__) || defined (__linux__) | |||
#include "JackNetUnixSocket.h" | |||
#endif | |||
// WINDOWS | |||
#ifdef WIN32 | |||
#include "JackNetWinSocket.h" | |||
#endif | |||
namespace Jack | |||
{ | |||
#if defined(__APPLE__) || defined(__linux__) | |||
typedef JackNetUnixSocket JackNetSocket; | |||
#endif | |||
#ifdef WIN32 | |||
typedef JackNetWinSocket JackNetSocket; | |||
#endif | |||
} // end of namespace | |||
#endif /* __JackPlatformNetSocket__ */ |
@@ -40,7 +40,7 @@ bool JackRestartThreadedDriver::Execute() | |||
Process(); | |||
} | |||
return false; | |||
} catch (JackDriverException& e) { | |||
} catch (JackDriverException& e) { | |||
e.PrintMessage(); | |||
jack_log("Driver is restarted"); | |||
fThread.DropRealTime(); | |||
@@ -48,7 +48,7 @@ bool JackWaitThreadedDriver::Execute() | |||
while (!fStarter.fRunning && fThread.GetStatus() == JackThread::kRunning) { | |||
fDriver->ProcessNull(); | |||
} | |||
// Set RT | |||
if (fDriver->IsRealTime()) { | |||
jack_log("JackWaitThreadedDriver::Init IsRealTime"); | |||
@@ -57,16 +57,16 @@ bool JackWaitThreadedDriver::Execute() | |||
if (fThread.AcquireRealTime(GetEngineControl()->fPriority) < 0) { | |||
jack_error("AcquireRealTime error"); | |||
} else { | |||
set_threaded_log_function(); | |||
set_threaded_log_function(); | |||
} | |||
} | |||
// Switch to keep running even in case of error | |||
while (fThread.GetStatus() == JackThread::kRunning) { | |||
fDriver->Process(); | |||
} | |||
return false; | |||
} catch (JackDriverException e) { | |||
} catch (JackDriverException& e) { | |||
e.PrintMessage(); | |||
jack_log("Driver is restarted"); | |||
fThread.DropRealTime(); | |||
@@ -79,7 +79,7 @@ bool JackWaitThreadedDriver::Execute() | |||
} else { | |||
return false; | |||
} | |||
} | |||
} | |||
} | |||
} // end of namespace |
@@ -2,7 +2,7 @@ | |||
JACK control API | |||
Copyright (C) 2008 Nedko Arnaudov | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; version 2 of the License. | |||
@@ -21,11 +21,15 @@ | |||
#ifndef __control_types__ | |||
#define __control_types__ | |||
#include "jslist.h" | |||
#include "JackExports.h" | |||
#ifdef WIN32 | |||
typedef HANDLE sigset_t; | |||
#include "jslist.h" | |||
#include "JackExports.h" | |||
#ifdef WIN32 | |||
#ifdef __MINGW32__ | |||
#include <sys/types.h> | |||
#else | |||
typedef HANDLE sigset_t; | |||
#endif | |||
#endif | |||
/** Parameter types, intentionally similar to jack_driver_param_type_t */ | |||
@@ -81,7 +85,7 @@ jackctl_wait_signals( | |||
EXPORT jackctl_server_t * | |||
jackctl_server_create(); | |||
EXPORT void | |||
jackctl_server_destroy( | |||
jackctl_server_t * server); | |||
@@ -151,7 +155,7 @@ jackctl_parameter_set_value( | |||
EXPORT union jackctl_parameter_value | |||
jackctl_parameter_get_default_value( | |||
jackctl_parameter_t * parameter); | |||
#if 0 | |||
{ /* Adjust editor indent */ | |||
#endif | |||
@@ -159,4 +163,4 @@ jackctl_parameter_get_default_value( | |||
} /* extern "C" */ | |||
#endif | |||
#endif | |||
#endif |
@@ -1,19 +1,19 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004 Jack O'Quin | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
@@ -22,21 +22,22 @@ | |||
#define __jack_types_h__ | |||
#ifdef WIN32 | |||
#include <windows.h> | |||
#define vsnprintf _vsnprintf | |||
#define snprintf _snprintf | |||
#ifndef __MINGW32__ | |||
typedef long int32_t; | |||
typedef unsigned long uint32_t; | |||
#include <windows.h> | |||
#ifndef __MINGW32__ | |||
#define vsnprintf _vsnprintf | |||
#define snprintf _snprintf | |||
typedef char int8_t; | |||
typedef unsigned char uint8_t; | |||
typedef short int16_t; | |||
typedef unsigned short uint16_t; | |||
typedef long int32_t; | |||
typedef unsigned long uint32_t; | |||
typedef LONGLONG int64_t; | |||
typedef ULONGLONG uint64_t; | |||
#else | |||
#include <stdint.h> | |||
#endif | |||
typedef char int8_t; | |||
typedef unsigned char uint8_t; | |||
typedef short int16_t; | |||
typedef unsigned short uint16_t; | |||
typedef LONGLONG int64_t; | |||
typedef ULONGLONG uint64_t; | |||
#else | |||
#include <inttypes.h> | |||
#endif | |||
@@ -102,7 +103,7 @@ typedef uint32_t jack_port_id_t; | |||
typedef uint32_t jack_port_type_id_t; | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* by the engine anytime there is work to be done. | |||
* | |||
* @pre nframes == jack_get_buffer_size() | |||
@@ -116,7 +117,7 @@ typedef uint32_t jack_port_type_id_t; | |||
typedef int (*JackProcessCallback)(jack_nframes_t nframes, void *arg); | |||
/** | |||
* Prototype for the client thread routine called | |||
* Prototype for the client thread routine called | |||
* by the engine when the client is inserted in the graph. | |||
* | |||
* @param arg pointer to a client supplied structure | |||
@@ -125,7 +126,7 @@ typedef int (*JackProcessCallback)(jack_nframes_t nframes, void *arg); | |||
typedef void *(*JackThreadCallback)(void* arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* once after the creation of the thread in which other | |||
* callbacks will be made. Special thread characteristics | |||
* can be set from this callback, for example. This is a | |||
@@ -139,7 +140,7 @@ typedef void *(*JackThreadCallback)(void* arg); | |||
typedef void (*JackThreadInitCallback)(void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* whenever the processing graph is reordered. | |||
* | |||
* @param arg pointer to a client supplied structure | |||
@@ -177,7 +178,7 @@ typedef int (*JackXRunCallback)(void *arg); | |||
typedef int (*JackBufferSizeCallback)(jack_nframes_t nframes, void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* when the engine sample rate changes. | |||
* | |||
* @param nframes new engine sample rate | |||
@@ -188,7 +189,7 @@ typedef int (*JackBufferSizeCallback)(jack_nframes_t nframes, void *arg); | |||
typedef int (*JackSampleRateCallback)(jack_nframes_t nframes, void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* whenever a port is registered or unregistered. | |||
* | |||
* @param arg pointer to a client supplied structure | |||
@@ -196,18 +197,18 @@ typedef int (*JackSampleRateCallback)(jack_nframes_t nframes, void *arg); | |||
typedef void (*JackPortRegistrationCallback)(jack_port_id_t port, int, void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* whenever a client is registered or unregistered. | |||
* | |||
* @param name a null-terminated string containing the client name | |||
* @param name a null-terminated string containing the client name | |||
* @param register non-zero if the client is being registered, | |||
* zero if the client is being unregistered | |||
* @param arg pointer to a client supplied structure | |||
*/ | |||
*/ | |||
typedef void (*JackClientRegistrationCallback)(const char* name, int val, void *arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* whenever a client is registered or unregistered. | |||
* | |||
* @param a one of two ports connected or disconnected | |||
@@ -215,11 +216,11 @@ typedef void (*JackClientRegistrationCallback)(const char* name, int val, void * | |||
* @param connect non-zero if ports were connected | |||
* zero if ports were disconnected | |||
* @param arg pointer to a client supplied data | |||
*/ | |||
*/ | |||
typedef void (*JackPortConnectCallback)(jack_port_id_t a, jack_port_id_t b, int connect, void* arg); | |||
/** | |||
* Prototype for the client supplied function that is called | |||
* Prototype for the client supplied function that is called | |||
* whenever jackd starts or stops freewheeling. | |||
* | |||
* @param starting non-zero if we start starting to freewheel, zero otherwise | |||
@@ -277,7 +278,7 @@ enum JackPortFlags { | |||
* that data that would be available from an output port (with | |||
* JackPortIsPhysical set) is sent to a physical output connector | |||
* as well, so that it can be heard/seen/whatever. | |||
* | |||
* | |||
* Clients that do not control physical interfaces | |||
* should never create ports with this bit set. | |||
*/ | |||
@@ -136,6 +136,7 @@ def build(bld): | |||
'JackSocketServerChannel.cpp', | |||
'JackSocketNotifyChannel.cpp', | |||
'JackSocketServerNotifyChannel.cpp', | |||
'JackNetUnixSocket.cpp', | |||
] | |||
if bld.env()['IS_MACOSX']: | |||
@@ -145,6 +146,7 @@ def build(bld): | |||
'../macosx/JackMachServerNotifyChannel.cpp', | |||
'../macosx/JackMacEngineRPC.cpp', | |||
'../macosx/RPC/JackRPCClientUser.c', | |||
'JackNetUnixSocket.cpp', | |||
] | |||
serverlib.vnum = bld.env()['JACK_API_VERSION'] | |||
@@ -17,8 +17,10 @@ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <signal.h> | |||
#include <unistd.h> | |||
#include <signal.h> | |||
#ifndef WIN32 | |||
#include <unistd.h> | |||
#endif | |||
#include <getopt.h> | |||
#include <jack/jack.h> | |||
#include <jack/intclient.h> | |||
@@ -124,7 +126,8 @@ parse_args (int argc, char *argv[]) | |||
int | |||
main (int argc, char *argv[]) | |||
{ | |||
jack_status_t status; | |||
jack_status_t status; | |||
char* name; | |||
/* parse and validate command arguments */ | |||
if (parse_args (argc, argv)) | |||
@@ -166,8 +169,8 @@ main (int argc, char *argv[]) | |||
} | |||
fprintf (stdout, "%s is running.\n", load_name); | |||
char* name = jack_get_internal_client_name(client, intclient); | |||
name = jack_get_internal_client_name(client, intclient); | |||
if (name) { | |||
printf("client name = %s\n", name); | |||
free(name); | |||
@@ -175,19 +178,28 @@ main (int argc, char *argv[]) | |||
if (wait_opt) { | |||
/* define a signal handler to unload the client, then | |||
* wait for it to exit */ | |||
signal (SIGQUIT, signal_handler); | |||
signal (SIGTERM, signal_handler); | |||
signal (SIGHUP, signal_handler); | |||
signal (SIGINT, signal_handler); | |||
while (1) { | |||
sleep (1); | |||
* wait for it to exit */ | |||
#ifdef WIN32 | |||
signal(SIGINT, signal_handler); | |||
signal(SIGABRT, signal_handler); | |||
signal(SIGTERM, signal_handler); | |||
#else | |||
signal(SIGQUIT, signal_handler); | |||
signal(SIGTERM, signal_handler); | |||
signal(SIGHUP, signal_handler); | |||
signal(SIGINT, signal_handler); | |||
#endif | |||
while (1) { | |||
#ifdef WIN32 | |||
Sleep(1000); | |||
#else | |||
sleep (1); | |||
#endif | |||
} | |||
} | |||
jack_client_close(client); | |||
return 0; | |||
} | |||
@@ -63,7 +63,6 @@ | |||
BA222AF20DC883F3001A17F4 /* PBXTargetDependency */, | |||
4BD624D30CBCF55700DE782F /* PBXTargetDependency */, | |||
BA222AF00DC883EF001A17F4 /* PBXTargetDependency */, | |||
4BD07AFC0E1BC3DF0001F7B5 /* PBXTargetDependency */, | |||
4B5A1BE20CD1CD730005BF74 /* PBXTargetDependency */, | |||
4B5A1BCF0CD1CCC80005BF74 /* PBXTargetDependency */, | |||
4BFA99440AAAED90009E916C /* PBXTargetDependency */, | |||
@@ -534,18 +533,6 @@ | |||
4BCC87970D57168300A7FEB1 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BCC87950D57168300A7FEB1 /* Accelerate.framework */; }; | |||
4BCC87980D57168300A7FEB1 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BCC87950D57168300A7FEB1 /* Accelerate.framework */; }; | |||
4BCC87990D57168300A7FEB1 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BCC87950D57168300A7FEB1 /* Accelerate.framework */; }; | |||
4BD07AAF0E1BB8330001F7B5 /* JackResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD07AAD0E1BB8330001F7B5 /* JackResampler.h */; }; | |||
4BD07AB00E1BB8330001F7B5 /* JackResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD07AAE0E1BB8330001F7B5 /* JackResampler.cpp */; }; | |||
4BD07AB70E1BB84F0001F7B5 /* JackLibSampleRateResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD07AB50E1BB84F0001F7B5 /* JackLibSampleRateResampler.h */; }; | |||
4BD07AB80E1BB84F0001F7B5 /* JackLibSampleRateResampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD07AB60E1BB84F0001F7B5 /* JackLibSampleRateResampler.cpp */; }; | |||
4BD337590E1EB7AB0043571E /* JackCoreAudioAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD337570E1EB7AB0043571E /* JackCoreAudioAdapter.cpp */; }; | |||
4BD3375A0E1EB7AB0043571E /* JackCoreAudioAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD337580E1EB7AB0043571E /* JackCoreAudioAdapter.h */; }; | |||
4BD3375F0E1EB7CB0043571E /* JackAudioAdapterInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD3375B0E1EB7CB0043571E /* JackAudioAdapterInterface.cpp */; }; | |||
4BD337600E1EB7CB0043571E /* JackAudioAdapterInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD3375C0E1EB7CB0043571E /* JackAudioAdapterInterface.h */; }; | |||
4BD337610E1EB7CB0043571E /* JackAudioAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD3375D0E1EB7CB0043571E /* JackAudioAdapter.cpp */; }; | |||
4BD337620E1EB7CB0043571E /* JackAudioAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD3375E0E1EB7CB0043571E /* JackAudioAdapter.h */; }; | |||
4BD337650E1EB8040043571E /* JackCallbackAudioAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD337630E1EB8040043571E /* JackCallbackAudioAdapter.cpp */; }; | |||
4BD337660E1EB8040043571E /* JackCallbackAudioAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD337640E1EB8040043571E /* JackCallbackAudioAdapter.h */; }; | |||
4BD4B4D809BACD9600750C0F /* JackTransportEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD4B4D409BACD9600750C0F /* JackTransportEngine.h */; }; | |||
4BD4B4D909BACD9600750C0F /* JackTransportEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD4B4D509BACD9600750C0F /* JackTransportEngine.cpp */; }; | |||
4BD4B4E409BACEF300750C0F /* JackTransportEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD4B4D509BACD9600750C0F /* JackTransportEngine.cpp */; }; | |||
@@ -571,6 +558,14 @@ | |||
4BFA82BC0DF6A9E40087B4E1 /* showtime.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B363F3D0DEB0C31001F72D9 /* showtime.c */; }; | |||
4BFA82C80DF6A9E40087B4E1 /* impulse_grabber.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B363F750DEB0D7D001F72D9 /* impulse_grabber.c */; }; | |||
4BFA99AA0AAAF40C009E916C /* jdelay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFA99A90AAAF40C009E916C /* jdelay.cpp */; }; | |||
BA047C750E14E7830041F3B6 /* JackNetUnixSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA047C720E14E7540041F3B6 /* JackNetUnixSocket.cpp */; }; | |||
BA047C760E14E79D0041F3B6 /* JackNetSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = BA047C710E14E7540041F3B6 /* JackNetSocket.h */; }; | |||
BA047C770E14E79D0041F3B6 /* JackNetUnixSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = BA047C730E14E7540041F3B6 /* JackNetUnixSocket.h */; }; | |||
BA047C780E14E79D0041F3B6 /* JackPlatformNetSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = BA047C740E14E7540041F3B6 /* JackPlatformNetSocket.h */; }; | |||
BA1510900E1D19B9004A8C63 /* JackPortAudioDevices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA15108E0E1D19B9004A8C63 /* JackPortAudioDevices.cpp */; }; | |||
BA1510910E1D19B9004A8C63 /* JackPortAudioDevices.h in Headers */ = {isa = PBXBuildFile; fileRef = BA15108F0E1D19B9004A8C63 /* JackPortAudioDevices.h */; }; | |||
BA1510990E1D1A2C004A8C63 /* JackPortAudioDevices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA15108E0E1D19B9004A8C63 /* JackPortAudioDevices.cpp */; }; | |||
BA15109A0E1D1A3B004A8C63 /* JackPortAudioDevices.h in Headers */ = {isa = PBXBuildFile; fileRef = BA15108F0E1D19B9004A8C63 /* JackPortAudioDevices.h */; }; | |||
BA222AD80DC88268001A17F4 /* JackNetTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA222AD60DC88268001A17F4 /* JackNetTool.cpp */; }; | |||
BA222AD90DC88269001A17F4 /* JackNetTool.h in Headers */ = {isa = PBXBuildFile; fileRef = BA222AD70DC88268001A17F4 /* JackNetTool.h */; }; | |||
BA222ADA0DC88269001A17F4 /* JackNetTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA222AD60DC88268001A17F4 /* JackNetTool.cpp */; }; | |||
@@ -918,13 +913,6 @@ | |||
remoteGlobalIDString = 4BA7FEB90D8E76270017FF73; | |||
remoteInfo = "jack_control Universal"; | |||
}; | |||
4BD07AFB0E1BC3DF0001F7B5 /* PBXContainerItemProxy */ = { | |||
isa = PBXContainerItemProxy; | |||
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; | |||
proxyType = 1; | |||
remoteGlobalIDString = 4BD07A9B0E1BB7770001F7B5; | |||
remoteInfo = netioadapter; | |||
}; | |||
4BD624D20CBCF55700DE782F /* PBXContainerItemProxy */ = { | |||
isa = PBXContainerItemProxy; | |||
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; | |||
@@ -1212,7 +1200,7 @@ | |||
4B3F49070AD8503300491C6E /* jack_cpu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jack_cpu.c; path = ../tests/jack_cpu.c; sourceTree = SOURCE_ROOT; }; | |||
4B4259E5076B635E00C1ECE1 /* JackMacEngineRPC.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JackMacEngineRPC.cpp; sourceTree = SOURCE_ROOT; }; | |||
4B44FAE50C7598370033A72C /* JackServerLaunch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackServerLaunch.cpp; path = ../common/JackServerLaunch.cpp; sourceTree = SOURCE_ROOT; }; | |||
4B464301076CAC7700E5077C /* Jack-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "Jack-Info.plist"; sourceTree = SOURCE_ROOT; }; | |||
4B464301076CAC7700E5077C /* Jack-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "Jack-Info.plist"; sourceTree = SOURCE_ROOT; }; | |||
4B4CA9730E02CF9600F4BFDA /* JackRestartThreadedDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackRestartThreadedDriver.h; path = ../common/JackRestartThreadedDriver.h; sourceTree = SOURCE_ROOT; }; | |||
4B4CA9740E02CF9600F4BFDA /* JackRestartThreadedDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackRestartThreadedDriver.cpp; path = ../common/JackRestartThreadedDriver.cpp; sourceTree = SOURCE_ROOT; }; | |||
4B4F9C8A0DC20C0400706CB0 /* JackMessageBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackMessageBuffer.cpp; path = ../common/JackMessageBuffer.cpp; sourceTree = SOURCE_ROOT; }; | |||
@@ -1315,19 +1303,6 @@ | |||
4BC834990DF4632F00DD1C93 /* JackPlatformSynchro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackPlatformSynchro.h; path = ../common/JackPlatformSynchro.h; sourceTree = SOURCE_ROOT; }; | |||
4BC8349A0DF4632F00DD1C93 /* JackPlatformThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackPlatformThread.h; path = ../common/JackPlatformThread.h; sourceTree = SOURCE_ROOT; }; | |||
4BCC87950D57168300A7FEB1 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = "<absolute>"; }; | |||
4BD07AA50E1BB7770001F7B5 /* audioadapter.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = audioadapter.so; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
4BD07AAD0E1BB8330001F7B5 /* JackResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackResampler.h; path = ../common/JackResampler.h; sourceTree = SOURCE_ROOT; }; | |||
4BD07AAE0E1BB8330001F7B5 /* JackResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackResampler.cpp; path = ../common/JackResampler.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD07AB50E1BB84F0001F7B5 /* JackLibSampleRateResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackLibSampleRateResampler.h; path = ../common/JackLibSampleRateResampler.h; sourceTree = SOURCE_ROOT; }; | |||
4BD07AB60E1BB84F0001F7B5 /* JackLibSampleRateResampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackLibSampleRateResampler.cpp; path = ../common/JackLibSampleRateResampler.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD337570E1EB7AB0043571E /* JackCoreAudioAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JackCoreAudioAdapter.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD337580E1EB7AB0043571E /* JackCoreAudioAdapter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JackCoreAudioAdapter.h; sourceTree = SOURCE_ROOT; }; | |||
4BD3375B0E1EB7CB0043571E /* JackAudioAdapterInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioAdapterInterface.cpp; path = ../common/JackAudioAdapterInterface.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD3375C0E1EB7CB0043571E /* JackAudioAdapterInterface.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackAudioAdapterInterface.h; path = ../common/JackAudioAdapterInterface.h; sourceTree = SOURCE_ROOT; }; | |||
4BD3375D0E1EB7CB0043571E /* JackAudioAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioAdapter.cpp; path = ../common/JackAudioAdapter.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD3375E0E1EB7CB0043571E /* JackAudioAdapter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackAudioAdapter.h; path = ../common/JackAudioAdapter.h; sourceTree = SOURCE_ROOT; }; | |||
4BD337630E1EB8040043571E /* JackCallbackAudioAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackCallbackAudioAdapter.cpp; path = ../common/JackCallbackAudioAdapter.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD337640E1EB8040043571E /* JackCallbackAudioAdapter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackCallbackAudioAdapter.h; path = ../common/JackCallbackAudioAdapter.h; sourceTree = SOURCE_ROOT; }; | |||
4BD4B4D409BACD9600750C0F /* JackTransportEngine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackTransportEngine.h; path = ../common/JackTransportEngine.h; sourceTree = SOURCE_ROOT; }; | |||
4BD4B4D509BACD9600750C0F /* JackTransportEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackTransportEngine.cpp; path = ../common/JackTransportEngine.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BD561C708EEB910006BBC2A /* JackSynchro.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackSynchro.h; path = ../common/JackSynchro.h; sourceTree = SOURCE_ROOT; }; | |||
@@ -1335,7 +1310,7 @@ | |||
4BD6240C0CBCF16600DE782F /* inprocess.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = inprocess.c; path = "../example-clients/inprocess.c"; sourceTree = SOURCE_ROOT; }; | |||
4BE4CBFF0CDA153400CCF5BB /* JackTools.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackTools.cpp; path = ../common/JackTools.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BE4CC000CDA153400CCF5BB /* JackTools.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackTools.h; path = ../common/JackTools.h; sourceTree = SOURCE_ROOT; }; | |||
4BE50F8F0B01EE8000C05E63 /* Jackwrapper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Jackwrapper-Info.plist"; sourceTree = "<group>"; }; | |||
4BE50F8F0B01EE8000C05E63 /* Jackwrapper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Jackwrapper-Info.plist"; sourceTree = "<group>"; }; | |||
4BE6C6A30A3E096F005A203A /* jack_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_test; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
4BE6C6AC0A3E0A65005A203A /* jack_test.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = jack_test.cpp; path = ../tests/jack_test.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BE99D300AD7A04800C59091 /* jack_cpu */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_cpu; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
@@ -1428,6 +1403,12 @@ | |||
4BFB73F608AD291A00DB99B8 /* JackGlobals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackGlobals.h; path = ../common/JackGlobals.h; sourceTree = SOURCE_ROOT; }; | |||
4BFB741E08AD2B9900DB99B8 /* JackMachThread.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JackMachThread.cpp; sourceTree = SOURCE_ROOT; }; | |||
4BFB741F08AD2B9900DB99B8 /* JackMachThread.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JackMachThread.h; sourceTree = SOURCE_ROOT; }; | |||
BA047C710E14E7540041F3B6 /* JackNetSocket.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackNetSocket.h; path = ../common/JackNetSocket.h; sourceTree = SOURCE_ROOT; }; | |||
BA047C720E14E7540041F3B6 /* JackNetUnixSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackNetUnixSocket.cpp; path = ../common/JackNetUnixSocket.cpp; sourceTree = SOURCE_ROOT; }; | |||
BA047C730E14E7540041F3B6 /* JackNetUnixSocket.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackNetUnixSocket.h; path = ../common/JackNetUnixSocket.h; sourceTree = SOURCE_ROOT; }; | |||
BA047C740E14E7540041F3B6 /* JackPlatformNetSocket.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackPlatformNetSocket.h; path = ../common/JackPlatformNetSocket.h; sourceTree = SOURCE_ROOT; }; | |||
BA15108E0E1D19B9004A8C63 /* JackPortAudioDevices.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackPortAudioDevices.cpp; path = ../windows/JackPortAudioDevices.cpp; sourceTree = SOURCE_ROOT; }; | |||
BA15108F0E1D19B9004A8C63 /* JackPortAudioDevices.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackPortAudioDevices.h; path = ../windows/JackPortAudioDevices.h; sourceTree = SOURCE_ROOT; }; | |||
BA222ACF0DC88132001A17F4 /* jack_net.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = jack_net.so; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
BA222AD60DC88268001A17F4 /* JackNetTool.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackNetTool.cpp; path = ../common/JackNetTool.cpp; sourceTree = SOURCE_ROOT; }; | |||
BA222AD70DC88268001A17F4 /* JackNetTool.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackNetTool.h; path = ../common/JackNetTool.h; sourceTree = SOURCE_ROOT; }; | |||
@@ -1862,13 +1843,6 @@ | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD07AA00E1BB7770001F7B5 /* Frameworks */ = { | |||
isa = PBXFrameworksBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD623F20CBCF0F000DE782F /* Frameworks */ = { | |||
isa = PBXFrameworksBuildPhase; | |||
buildActionMask = 2147483647; | |||
@@ -2085,7 +2059,6 @@ | |||
4BFA82B70DF6A9E40087B4E1 /* jack_monitor_client */, | |||
4BFA82C30DF6A9E40087B4E1 /* jack_showtime */, | |||
4BFA82CF0DF6A9E40087B4E1 /* jack_impulse_grabber */, | |||
4BD07AA50E1BB7770001F7B5 /* audioadapter.so */, | |||
); | |||
name = Products; | |||
sourceTree = "<group>"; | |||
@@ -2478,25 +2451,6 @@ | |||
name = Channels; | |||
sourceTree = "<group>"; | |||
}; | |||
4BD07AA70E1BB80B0001F7B5 /* adapter */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
4BD337630E1EB8040043571E /* JackCallbackAudioAdapter.cpp */, | |||
4BD337640E1EB8040043571E /* JackCallbackAudioAdapter.h */, | |||
4BD07AAD0E1BB8330001F7B5 /* JackResampler.h */, | |||
4BD07AAE0E1BB8330001F7B5 /* JackResampler.cpp */, | |||
4BD07AB50E1BB84F0001F7B5 /* JackLibSampleRateResampler.h */, | |||
4BD07AB60E1BB84F0001F7B5 /* JackLibSampleRateResampler.cpp */, | |||
4BD3375B0E1EB7CB0043571E /* JackAudioAdapterInterface.cpp */, | |||
4BD3375C0E1EB7CB0043571E /* JackAudioAdapterInterface.h */, | |||
4BD3375D0E1EB7CB0043571E /* JackAudioAdapter.cpp */, | |||
4BD3375E0E1EB7CB0043571E /* JackAudioAdapter.h */, | |||
4BD337570E1EB7AB0043571E /* JackCoreAudioAdapter.cpp */, | |||
4BD337580E1EB7AB0043571E /* JackCoreAudioAdapter.h */, | |||
); | |||
name = adapter; | |||
sourceTree = "<group>"; | |||
}; | |||
4BD56D73079687AD006D44F9 /* External */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
@@ -2545,6 +2499,8 @@ | |||
4BF8D22A0834F07D00C94B91 /* JackAudioDriver.cpp */, | |||
4B395C9706AEF53800923527 /* JackCoreAudioDriver.h */, | |||
4B395C9606AEF53800923527 /* JackCoreAudioDriver.cpp */, | |||
BA15108F0E1D19B9004A8C63 /* JackPortAudioDevices.h */, | |||
BA15108E0E1D19B9004A8C63 /* JackPortAudioDevices.cpp */, | |||
4B978DEB0A31D099009E2DD1 /* JackPortAudioDriver.h */, | |||
4B978DEC0A31D099009E2DD1 /* JackPortAudioDriver.cpp */, | |||
); | |||
@@ -2604,7 +2560,10 @@ | |||
BA222AEA0DC88379001A17F4 /* Net */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
4BD07AA70E1BB80B0001F7B5 /* adapter */, | |||
BA047C710E14E7540041F3B6 /* JackNetSocket.h */, | |||
BA047C720E14E7540041F3B6 /* JackNetUnixSocket.cpp */, | |||
BA047C730E14E7540041F3B6 /* JackNetUnixSocket.h */, | |||
BA047C740E14E7540041F3B6 /* JackPlatformNetSocket.h */, | |||
BA222AEB0DC883B3001A17F4 /* JackNetManager.cpp */, | |||
BA222AEC0DC883B3001A17F4 /* JackNetManager.h */, | |||
BA222AD60DC88268001A17F4 /* JackNetTool.cpp */, | |||
@@ -2904,6 +2863,7 @@ | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4B35C6210D4731D2000DE7AE /* JackPortAudioDriver.h in Headers */, | |||
BA1510910E1D19B9004A8C63 /* JackPortAudioDevices.h in Headers */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
@@ -3095,6 +3055,9 @@ | |||
4B5DB9840CD2429B00EBA5EE /* JackDebugClient.h in Headers */, | |||
4BE4CC040CDA153500CCF5BB /* JackTools.h in Headers */, | |||
BA222AD90DC88269001A17F4 /* JackNetTool.h in Headers */, | |||
BA047C760E14E79D0041F3B6 /* JackNetSocket.h in Headers */, | |||
BA047C770E14E79D0041F3B6 /* JackNetUnixSocket.h in Headers */, | |||
BA047C780E14E79D0041F3B6 /* JackPlatformNetSocket.h in Headers */, | |||
4B95BCAE0D913073000F7695 /* control.h in Headers */, | |||
4B9A26020DBF8584006E9FBC /* jslist.h in Headers */, | |||
4B4F9C8D0DC20C0400706CB0 /* JackMessageBuffer.h in Headers */, | |||
@@ -3209,6 +3172,7 @@ | |||
isa = PBXHeadersBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
BA15109A0E1D1A3B004A8C63 /* JackPortAudioDevices.h in Headers */, | |||
4B978DED0A31D099009E2DD1 /* JackPortAudioDriver.h in Headers */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
@@ -3234,19 +3198,6 @@ | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD07A9C0E1BB7770001F7B5 /* Headers */ = { | |||
isa = PBXHeadersBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4BD07AAF0E1BB8330001F7B5 /* JackResampler.h in Headers */, | |||
4BD07AB70E1BB84F0001F7B5 /* JackLibSampleRateResampler.h in Headers */, | |||
4BD3375A0E1EB7AB0043571E /* JackCoreAudioAdapter.h in Headers */, | |||
4BD337600E1EB7CB0043571E /* JackAudioAdapterInterface.h in Headers */, | |||
4BD337620E1EB7CB0043571E /* JackAudioAdapter.h in Headers */, | |||
4BD337660E1EB8040043571E /* JackCallbackAudioAdapter.h in Headers */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD623EE0CBCF0F000DE782F /* Headers */ = { | |||
isa = PBXHeadersBuildPhase; | |||
buildActionMask = 2147483647; | |||
@@ -4433,23 +4384,6 @@ | |||
productReference = 4BA7FEC30D8E76270017FF73 /* jack_server_control */; | |||
productType = "com.apple.product-type.tool"; | |||
}; | |||
4BD07A9B0E1BB7770001F7B5 /* audioadapter */ = { | |||
isa = PBXNativeTarget; | |||
buildConfigurationList = 4BD07AA10E1BB7770001F7B5 /* Build configuration list for PBXNativeTarget "audioadapter" */; | |||
buildPhases = ( | |||
4BD07A9C0E1BB7770001F7B5 /* Headers */, | |||
4BD07A9E0E1BB7770001F7B5 /* Sources */, | |||
4BD07AA00E1BB7770001F7B5 /* Frameworks */, | |||
); | |||
buildRules = ( | |||
); | |||
dependencies = ( | |||
); | |||
name = audioadapter; | |||
productName = jack_coreaudio; | |||
productReference = 4BD07AA50E1BB7770001F7B5 /* audioadapter.so */; | |||
productType = "com.apple.product-type.library.dynamic"; | |||
}; | |||
4BD623ED0CBCF0F000DE782F /* inprocess */ = { | |||
isa = PBXNativeTarget; | |||
buildConfigurationList = 4BD623F30CBCF0F000DE782F /* Build configuration list for PBXNativeTarget "inprocess" */; | |||
@@ -4742,7 +4676,6 @@ | |||
4B699DA6097D421700A18468 /* jack_dummy Universal */, | |||
BA222AC50DC88132001A17F4 /* jack_net Universal */, | |||
4BD623ED0CBCF0F000DE782F /* inprocess */, | |||
4BD07A9B0E1BB7770001F7B5 /* audioadapter */, | |||
BA222AE00DC882DB001A17F4 /* netmanager */, | |||
4B35C41B0D4731D1000DE7AE /* jackdmp framework 64bits */, | |||
4B35C4270D4731D1000DE7AE /* Jackmp.framework 64 bits */, | |||
@@ -5537,6 +5470,7 @@ | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4B35C6230D4731D2000DE7AE /* JackPortAudioDriver.cpp in Sources */, | |||
BA1510900E1D19B9004A8C63 /* JackPortAudioDevices.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
@@ -5724,6 +5658,7 @@ | |||
4B5DB9830CD2429A00EBA5EE /* JackDebugClient.cpp in Sources */, | |||
4BE4CC030CDA153500CCF5BB /* JackTools.cpp in Sources */, | |||
BA222AD80DC88268001A17F4 /* JackNetTool.cpp in Sources */, | |||
BA047C750E14E7830041F3B6 /* JackNetUnixSocket.cpp in Sources */, | |||
4B95BCAC0D913064000F7695 /* JackControl.cpp in Sources */, | |||
4B9A25B60DBF8330006E9FBC /* JackError.cpp in Sources */, | |||
4B02069E0DC0BAB400319AF1 /* JackProcessSync.cpp in Sources */, | |||
@@ -5852,6 +5787,7 @@ | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
BA1510990E1D1A2C004A8C63 /* JackPortAudioDevices.cpp in Sources */, | |||
4B978DEE0A31D099009E2DD1 /* JackPortAudioDriver.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
@@ -5880,19 +5816,6 @@ | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD07A9E0E1BB7770001F7B5 /* Sources */ = { | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
4BD07AB00E1BB8330001F7B5 /* JackResampler.cpp in Sources */, | |||
4BD07AB80E1BB84F0001F7B5 /* JackLibSampleRateResampler.cpp in Sources */, | |||
4BD337590E1EB7AB0043571E /* JackCoreAudioAdapter.cpp in Sources */, | |||
4BD3375F0E1EB7CB0043571E /* JackAudioAdapterInterface.cpp in Sources */, | |||
4BD337610E1EB7CB0043571E /* JackAudioAdapter.cpp in Sources */, | |||
4BD337650E1EB8040043571E /* JackCallbackAudioAdapter.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
4BD623F00CBCF0F000DE782F /* Sources */ = { | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
@@ -6240,11 +6163,6 @@ | |||
target = 4BA7FEB90D8E76270017FF73 /* jack_server_control Universal */; | |||
targetProxy = 4BA7FECC0D8E76810017FF73 /* PBXContainerItemProxy */; | |||
}; | |||
4BD07AFC0E1BC3DF0001F7B5 /* PBXTargetDependency */ = { | |||
isa = PBXTargetDependency; | |||
target = 4BD07A9B0E1BB7770001F7B5 /* audioadapter */; | |||
targetProxy = 4BD07AFB0E1BC3DF0001F7B5 /* PBXContainerItemProxy */; | |||
}; | |||
4BD624D30CBCF55700DE782F /* PBXTargetDependency */ = { | |||
isa = PBXTargetDependency; | |||
target = 4BD623ED0CBCF0F000DE782F /* inprocess */; | |||
@@ -6750,7 +6668,6 @@ | |||
INFOPLIST_FILE = "Jack-Info.plist"; | |||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | |||
LIBRARY_SEARCH_PATHS = /usr/lib/gcc/darwin/3.3; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ( | |||
"-DUSE_POSIX_SHM", | |||
"-D__SMP__", | |||
@@ -6940,7 +6857,6 @@ | |||
INFOPLIST_FILE = "Jack-Info.plist"; | |||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | |||
LIBRARY_SEARCH_PATHS = /usr/lib/gcc/darwin/3.3; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ( | |||
"-D__SMP__", | |||
"-DUSE_POSIX_SHM", | |||
@@ -9035,7 +8951,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -9180,7 +9095,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -9330,7 +9244,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -9471,7 +9384,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; | |||
OTHER_LDFLAGS = ( | |||
@@ -9601,7 +9513,6 @@ | |||
GCC_ENABLE_FIX_AND_CONTINUE = YES; | |||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; | |||
GCC_OPTIMIZATION_LEVEL = 0; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_LDFLAGS = ""; | |||
OTHER_REZFLAGS = ""; | |||
@@ -10546,7 +10457,6 @@ | |||
GCC_ENABLE_FIX_AND_CONTINUE = YES; | |||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; | |||
GCC_OPTIMIZATION_LEVEL = 0; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_LDFLAGS = ""; | |||
OTHER_REZFLAGS = ""; | |||
@@ -10784,7 +10694,6 @@ | |||
INFOPLIST_FILE = "Jack-Info.plist"; | |||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | |||
LIBRARY_SEARCH_PATHS = /usr/lib/gcc/darwin/3.3; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ( | |||
"-DUSE_POSIX_SHM", | |||
"-D__SMP__", | |||
@@ -10954,7 +10863,6 @@ | |||
INFOPLIST_FILE = "Jack-Info.plist"; | |||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; | |||
LIBRARY_SEARCH_PATHS = /usr/lib/gcc/darwin/3.3; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ( | |||
"-D__SMP__", | |||
"-DUSE_POSIX_SHM", | |||
@@ -12351,7 +12259,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -12490,7 +12397,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -12643,7 +12549,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -12690,6 +12595,7 @@ | |||
GCC_PREPROCESSOR_DEFINITIONS = ""; | |||
HEADER_SEARCH_PATHS = ../common/; | |||
INSTALL_PATH = /usr/local/lib; | |||
LD_OPENMP_FLAGS = "-fopenmp"; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
MACOSX_DEPLOYMENT_TARGET = 10.4; | |||
@@ -13038,150 +12944,6 @@ | |||
}; | |||
name = Default; | |||
}; | |||
4BD07AA20E1BB7770001F7B5 /* Development */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ARCHS = i386; | |||
COPY_PHASE_STRIP = NO; | |||
DEAD_CODE_STRIPPING = NO; | |||
DEBUGGING_SYMBOLS = YES; | |||
DYLIB_COMPATIBILITY_VERSION = 1; | |||
DYLIB_CURRENT_VERSION = 1; | |||
EXECUTABLE_EXTENSION = so; | |||
GCC_DYNAMIC_NO_PIC = NO; | |||
GCC_ENABLE_FIX_AND_CONTINUE = YES; | |||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; | |||
GCC_MODEL_TUNING = G4; | |||
GCC_OPTIMIZATION_LEVEL = 0; | |||
GCC_PREPROCESSOR_DEFINITIONS = ""; | |||
HEADER_SEARCH_PATHS = ../common; | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_SEARCH_PATHS = /opt/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; | |||
OTHER_LDFLAGS = ( | |||
/opt/local/lib/libsamplerate.a, | |||
"-framework", | |||
Jackservermp, | |||
"-framework", | |||
CoreAudio, | |||
"-framework", | |||
CoreServices, | |||
"-framework", | |||
AudioUnit, | |||
); | |||
OTHER_REZFLAGS = ""; | |||
PREBINDING = NO; | |||
PRODUCT_NAME = netioadapter; | |||
SDKROOT = ""; | |||
SECTORDER_FLAGS = ""; | |||
WARNING_CFLAGS = ( | |||
"-Wmost", | |||
"-Wno-four-char-constants", | |||
"-Wno-unknown-pragmas", | |||
); | |||
ZERO_LINK = YES; | |||
}; | |||
name = Development; | |||
}; | |||
4BD07AA30E1BB7770001F7B5 /* Deployment */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ARCHS = i386; | |||
COPY_PHASE_STRIP = YES; | |||
DEAD_CODE_STRIPPING = NO; | |||
DYLIB_COMPATIBILITY_VERSION = 1; | |||
DYLIB_CURRENT_VERSION = 1; | |||
EXECUTABLE_EXTENSION = so; | |||
GCC_ENABLE_FIX_AND_CONTINUE = NO; | |||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; | |||
GCC_MODEL_TUNING = G4; | |||
GCC_PREPROCESSOR_DEFINITIONS = ""; | |||
HEADER_SEARCH_PATHS = ../common; | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_SEARCH_PATHS = /opt/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
MACOSX_DEPLOYMENT_TARGET = 10.4; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = ( | |||
"$(OTHER_CFLAGS)", | |||
"-D__SMP__", | |||
); | |||
OTHER_LDFLAGS = ( | |||
/opt/local/lib/libsamplerate.a, | |||
"-framework", | |||
Jackservermp, | |||
"-framework", | |||
CoreAudio, | |||
"-framework", | |||
CoreServices, | |||
"-framework", | |||
AudioUnit, | |||
); | |||
OTHER_REZFLAGS = ""; | |||
PREBINDING = NO; | |||
PRODUCT_NAME = audioadapter; | |||
SDKROOT = ""; | |||
SECTORDER_FLAGS = ""; | |||
WARNING_CFLAGS = ( | |||
"-Wmost", | |||
"-Wno-four-char-constants", | |||
"-Wno-unknown-pragmas", | |||
); | |||
ZERO_LINK = NO; | |||
}; | |||
name = Deployment; | |||
}; | |||
4BD07AA40E1BB7770001F7B5 /* Default */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ARCHS = ( | |||
i386, | |||
ppc, | |||
); | |||
DEAD_CODE_STRIPPING = NO; | |||
DYLIB_COMPATIBILITY_VERSION = 1; | |||
DYLIB_CURRENT_VERSION = 1; | |||
EXECUTABLE_EXTENSION = so; | |||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; | |||
GCC_MODEL_TUNING = G4; | |||
GCC_PREPROCESSOR_DEFINITIONS = ""; | |||
HEADER_SEARCH_PATHS = ../common; | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_SEARCH_PATHS = /opt/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; | |||
OTHER_LDFLAGS = ( | |||
"-framework", | |||
Jackdmp, | |||
"-framework", | |||
AudioToolBox, | |||
"-framework", | |||
CoreAudio, | |||
"-framework", | |||
CoreServices, | |||
"-framework", | |||
AudioUnit, | |||
); | |||
OTHER_REZFLAGS = ""; | |||
PREBINDING = NO; | |||
PRODUCT_NAME = inprocess; | |||
SDKROOT = ""; | |||
SECTORDER_FLAGS = ""; | |||
WARNING_CFLAGS = ( | |||
"-Wmost", | |||
"-Wno-four-char-constants", | |||
"-Wno-unknown-pragmas", | |||
); | |||
}; | |||
name = Default; | |||
}; | |||
4BD623F40CBCF0F000DE782F /* Development */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
@@ -13204,7 +12966,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; | |||
OTHER_LDFLAGS = ( | |||
@@ -14338,7 +14099,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA"; | |||
OTHER_LDFLAGS = ( | |||
@@ -14473,7 +14233,6 @@ | |||
INSTALL_PATH = /usr/local/lib; | |||
LIBRARY_STYLE = DYNAMIC; | |||
MACH_O_TYPE = mh_dylib; | |||
OPTIMIZATION_CFLAGS = "-O0"; | |||
OTHER_CFLAGS = ""; | |||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; | |||
OTHER_LDFLAGS = ( | |||
@@ -15203,16 +14962,6 @@ | |||
defaultConfigurationIsVisible = 0; | |||
defaultConfigurationName = Default; | |||
}; | |||
4BD07AA10E1BB7770001F7B5 /* Build configuration list for PBXNativeTarget "audioadapter" */ = { | |||
isa = XCConfigurationList; | |||
buildConfigurations = ( | |||
4BD07AA20E1BB7770001F7B5 /* Development */, | |||
4BD07AA30E1BB7770001F7B5 /* Deployment */, | |||
4BD07AA40E1BB7770001F7B5 /* Default */, | |||
); | |||
defaultConfigurationIsVisible = 0; | |||
defaultConfigurationName = Default; | |||
}; | |||
4BD623F30CBCF0F000DE782F /* Build configuration list for PBXNativeTarget "inprocess" */ = { | |||
isa = XCConfigurationList; | |||
buildConfigurations = ( | |||
@@ -44,8 +44,13 @@ def build(bld): | |||
create_jack_driver_obj(bld, 'dummy', '../common/JackDummyDriver.cpp') | |||
create_jack_audio_driver_obj(bld, 'coreaudio', 'JackCoreAudioDriver.cpp') | |||
portaudio_src = [ | |||
'../windows/JackPortAudioDriver.cpp', | |||
'../windows/JackPortAudioDevices.cpp', | |||
] | |||
#create_jack_audio_driver_obj(bld, 'portaudio', '../windows/JackPortAudioDriver.cpp') | |||
#create_jack_audio_driver_obj(bld, 'portaudio', portaudio_src) | |||
create_jack_driver_obj(bld, 'net', '../common/JackNetDriver.cpp') | |||
@@ -0,0 +1,7 @@ | |||
[IO] | |||
input=4 | |||
output=4 | |||
[AUTO_CONNECT] | |||
input=1 | |||
output=1 |
@@ -0,0 +1,336 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackNetWinSocket.h" | |||
namespace Jack | |||
{ | |||
//utility ********************************************************************************************************* | |||
EXPORT int GetHostName ( char * name, int size ) | |||
{ | |||
if ( gethostname ( name, size ) == SOCKET_ERROR ) | |||
{ | |||
jack_error ( "Can't get 'hostname' : %s", strerror ( NET_ERROR_CODE ) ); | |||
strcpy ( name, "default" ); | |||
return -1; | |||
} | |||
return 0; | |||
} | |||
struct { int code; char* msg; } NetErrorList[] = | |||
{ | |||
E(0, "No error"), | |||
E(WSAEINTR, "Interrupted system call"), | |||
E(WSAEBADF, "Bad file number"), | |||
E(WSAEACCES, "Permission denied"), | |||
E(WSAEFAULT, "Bad address"), | |||
E(WSAEINVAL, "Invalid argument"), | |||
E(WSAEMFILE, "Too many open sockets"), | |||
E(WSAEWOULDBLOCK, "Operation would block"), | |||
E(WSAEINPROGRESS, "Operation now in progress"), | |||
E(WSAEALREADY, "Operation already in progress"), | |||
E(WSAENOTSOCK, "Socket operation on non-socket"), | |||
E(WSAEDESTADDRREQ, "Destination address required"), | |||
E(WSAEMSGSIZE, "Message too long"), | |||
E(WSAEPROTOTYPE, "Protocol wrong type for socket"), | |||
E(WSAENOPROTOOPT, "Bad protocol option"), | |||
E(WSAEPROTONOSUPPORT, "Protocol not supported"), | |||
E(WSAESOCKTNOSUPPORT, "Socket type not supported"), | |||
E(WSAEOPNOTSUPP, "Operation not supported on socket"), | |||
E(WSAEPFNOSUPPORT, "Protocol family not supported"), | |||
E(WSAEAFNOSUPPORT, "Address family not supported"), | |||
E(WSAEADDRINUSE, "Address already in use"), | |||
E(WSAEADDRNOTAVAIL, "Can't assign requested address"), | |||
E(WSAENETDOWN, "Network is down"), | |||
E(WSAENETUNREACH, "Network is unreachable"), | |||
E(WSAENETRESET, "Net connection reset"), | |||
E(WSAECONNABORTED, "Software caused connection abort"), | |||
E(WSAECONNRESET, "Connection reset by peer"), | |||
E(WSAENOBUFS, "No buffer space available"), | |||
E(WSAEISCONN, "Socket is already connected"), | |||
E(WSAENOTCONN, "Socket is not connected"), | |||
E(WSAESHUTDOWN, "Can't send after socket shutdown"), | |||
E(WSAETOOMANYREFS, "Too many references, can't splice"), | |||
E(WSAETIMEDOUT, "Connection timed out"), | |||
E(WSAECONNREFUSED, "Connection refused"), | |||
E(WSAELOOP, "Too many levels of symbolic links"), | |||
E(WSAENAMETOOLONG, "File name too long"), | |||
E(WSAEHOSTDOWN, "Host is down"), | |||
E(WSAEHOSTUNREACH, "No route to host"), | |||
E(WSAENOTEMPTY, "Directory not empty"), | |||
E(WSAEPROCLIM, "Too many processes"), | |||
E(WSAEUSERS, "Too many users"), | |||
E(WSAEDQUOT, "Disc quota exceeded"), | |||
E(WSAESTALE, "Stale NFS file handle"), | |||
E(WSAEREMOTE, "Too many levels of remote in path"), | |||
E(WSASYSNOTREADY, "Network system is unavailable"), | |||
E(WSAVERNOTSUPPORTED, "Winsock version out of range"), | |||
E(WSANOTINITIALISED, "WSAStartup not yet called"), | |||
E(WSAEDISCON, "Graceful shutdown in progress"), | |||
E(WSAHOST_NOT_FOUND, "Host not found"), | |||
E(WSANO_DATA, "No host data of that type was found"), | |||
{ -1, NULL }, | |||
}; | |||
EXPORT const char* PrintError ( int error ) | |||
{ | |||
int i; | |||
for ( i = 0; NetErrorList[i].code >= 0; ++i) | |||
{ | |||
if ( error == NetErrorList[i].code ) | |||
return NetErrorList[i].msg; | |||
} | |||
return strerror ( error ); | |||
} | |||
//construct/destruct*********************************************************************************************** | |||
JackNetWinSocket::JackNetWinSocket() | |||
{ | |||
fSockfd = 0; | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
JackNetWinSocket::JackNetWinSocket ( const char* ip, int port ) | |||
{ | |||
fSockfd = 0; | |||
fPort = port; | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_port = htons ( port ); | |||
fSendAddr.sin_addr.s_addr = inet_addr ( ip ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_port = htons ( port ); | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
JackNetWinSocket::~JackNetWinSocket() | |||
{ | |||
Close(); | |||
} | |||
//socket*********************************************************************************************************** | |||
int JackNetWinSocket::NewSocket() | |||
{ | |||
if ( fSockfd ) | |||
{ | |||
Close(); | |||
Reset(); | |||
} | |||
fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); | |||
return fSockfd; | |||
} | |||
int JackNetWinSocket::Bind() | |||
{ | |||
return bind ( fSockfd, reinterpret_cast<SOCKADDR*> ( &fRecvAddr ), sizeof ( SOCKADDR ) ); | |||
} | |||
int JackNetWinSocket::BindWith ( const char* ip ) | |||
{ | |||
fRecvAddr.sin_addr.s_addr = inet_addr ( ip ); | |||
return Bind(); | |||
} | |||
int JackNetWinSocket::BindWith ( int port ) | |||
{ | |||
fRecvAddr.sin_port = htons ( port ); | |||
return Bind(); | |||
} | |||
int JackNetWinSocket::Connect() | |||
{ | |||
return connect ( fSockfd, reinterpret_cast<SOCKADDR*> ( &fSendAddr ), sizeof ( SOCKADDR ) ); | |||
} | |||
int JackNetWinSocket::ConnectTo ( const char* ip ) | |||
{ | |||
fSendAddr.sin_addr.s_addr = inet_addr ( ip ); | |||
return Connect(); | |||
} | |||
void JackNetWinSocket::Close() | |||
{ | |||
if ( fSockfd ) | |||
closesocket ( fSockfd ); | |||
fSockfd = 0; | |||
} | |||
void JackNetWinSocket::Reset() | |||
{ | |||
fSendAddr.sin_family = AF_INET; | |||
fSendAddr.sin_port = htons ( fPort ); | |||
fSendAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fSendAddr.sin_zero, 0, 8 ); | |||
fRecvAddr.sin_family = AF_INET; | |||
fRecvAddr.sin_port = htons ( fPort ); | |||
fRecvAddr.sin_addr.s_addr = htonl ( INADDR_ANY ); | |||
memset ( &fRecvAddr.sin_zero, 0, 8 ); | |||
} | |||
bool JackNetWinSocket::IsSocket() | |||
{ | |||
return ( fSockfd ) ? true : false; | |||
} | |||
//IP/PORT*********************************************************************************************************** | |||
void JackNetWinSocket::SetPort ( int port ) | |||
{ | |||
fPort = port; | |||
fSendAddr.sin_port = htons ( port ); | |||
fRecvAddr.sin_port = htons ( port ); | |||
} | |||
int JackNetWinSocket::GetPort() | |||
{ | |||
return fPort; | |||
} | |||
//address*********************************************************************************************************** | |||
int JackNetWinSocket::SetAddress ( const char* ip, int port ) | |||
{ | |||
fSendAddr.sin_addr.s_addr = inet_addr ( ip ); | |||
fSendAddr.sin_port = htons ( port ); | |||
return 0; | |||
} | |||
char* JackNetWinSocket::GetSendIP() | |||
{ | |||
return inet_ntoa ( fSendAddr.sin_addr ); | |||
} | |||
char* JackNetWinSocket::GetRecvIP() | |||
{ | |||
return inet_ntoa ( fRecvAddr.sin_addr ); | |||
} | |||
//utility************************************************************************************************************ | |||
int JackNetWinSocket::GetName ( char* name ) | |||
{ | |||
return gethostname ( name, 255 ); | |||
} | |||
int JackNetWinSocket::JoinMCastGroup ( const char* ip ) | |||
{ | |||
struct ip_mreq multicast_req; | |||
multicast_req.imr_multiaddr.s_addr = inet_addr ( ip ); | |||
multicast_req.imr_interface.s_addr = htonl ( INADDR_ANY ); | |||
//12 is IP_ADD_MEMBERSHIP in winsock2 (differs from winsock1...) | |||
return SetOption ( IPPROTO_IP, 12, &multicast_req, sizeof ( multicast_req ) ); | |||
} | |||
void JackNetWinSocket::CopyParams ( JackNetWinSocket* socket ) | |||
{ | |||
fPort = socket->fPort; | |||
fSendAddr = socket->fSendAddr; | |||
fRecvAddr = socket->fRecvAddr; | |||
} | |||
//options************************************************************************************************************ | |||
int JackNetWinSocket::SetOption ( int level, int optname, const void* optval, SOCKLEN optlen ) | |||
{ | |||
return setsockopt ( fSockfd, level, optname, static_cast<const char*>(optval), optlen ); | |||
} | |||
int JackNetWinSocket::GetOption ( int level, int optname, void* optval, SOCKLEN* optlen ) | |||
{ | |||
return getsockopt ( fSockfd, level, optname, static_cast<char*>(optval), optlen ); | |||
} | |||
//tiemout************************************************************************************************************ | |||
int JackNetWinSocket::SetTimeOut ( int& msec ) | |||
{ | |||
//negative timeout, or exceeding 10s, return | |||
if ( ( msec < 0 ) || ( msec > 10000 ) ) | |||
return -1; | |||
return SetOption ( SOL_SOCKET, SO_RCVTIMEO, &msec, sizeof ( msec ) ); | |||
} | |||
//local loop********************************************************************************************************* | |||
int JackNetWinSocket::SetLocalLoop() | |||
{ | |||
char enable = 1; | |||
return SetOption ( IPPROTO_IP, IP_MULTICAST_LOOP, &enable, sizeof ( enable ) ); | |||
} | |||
//network operations************************************************************************************************* | |||
int JackNetWinSocket::SendTo ( const void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return sendto ( fSockfd, reinterpret_cast<const char*>(buffer), nbytes, flags, reinterpret_cast<SOCKADDR*> ( &fSendAddr ), sizeof ( SOCKADDR ) ); | |||
} | |||
int JackNetWinSocket::SendTo ( const void* buffer, size_t nbytes, int flags, const char* ip ) | |||
{ | |||
fSendAddr.sin_addr.s_addr = inet_addr ( ip ); | |||
return SendTo ( buffer, nbytes, flags ); | |||
} | |||
int JackNetWinSocket::Send ( const void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return send ( fSockfd, reinterpret_cast<const char*>(buffer), nbytes, flags ); | |||
} | |||
int JackNetWinSocket::RecvFrom ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
SOCKLEN addr_len = sizeof ( SOCKADDR ); | |||
return recvfrom ( fSockfd, reinterpret_cast<char*>(buffer), nbytes, flags, reinterpret_cast<SOCKADDR*> ( &fRecvAddr ), &addr_len ); | |||
} | |||
int JackNetWinSocket::Recv ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
return recv ( fSockfd, reinterpret_cast<char*>(buffer), nbytes, flags ); | |||
} | |||
int JackNetWinSocket::CatchHost ( void* buffer, size_t nbytes, int flags ) | |||
{ | |||
SOCKLEN addr_len = sizeof ( SOCKADDR ); | |||
return recvfrom ( fSockfd, reinterpret_cast<char*>(buffer), nbytes, flags, reinterpret_cast<SOCKADDR*> ( &fSendAddr ), &addr_len ); | |||
} | |||
net_error_t JackNetWinSocket::GetError() | |||
{ | |||
switch ( NET_ERROR_CODE ) | |||
{ | |||
case WSABASEERR: | |||
return NET_NO_ERROR; | |||
case WSAETIMEDOUT: | |||
return NET_NO_DATA; | |||
case WSAECONNREFUSED: | |||
return NET_CONN_ERROR; | |||
case WSAECONNRESET: | |||
return NET_CONN_ERROR; | |||
case WSAEACCES: | |||
return NET_CONN_ERROR; | |||
case WSAECONNABORTED: | |||
return NET_CONN_ERROR; | |||
case WSAEHOSTDOWN: | |||
return NET_CONN_ERROR; | |||
case WSAEHOSTUNREACH: | |||
return NET_CONN_ERROR; | |||
default: | |||
return NET_OP_ERROR; | |||
} | |||
} | |||
} | |||
@@ -0,0 +1,102 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackNetWinSocket__ | |||
#define __JackNetWinSocket__ | |||
#include "JackNetSocket.h" | |||
#ifdef __MINGW32__ | |||
#include <winsock2.h> | |||
#include <ws2tcpip.h> | |||
#endif | |||
namespace Jack | |||
{ | |||
#define E(code, s) { code, s } | |||
#define NET_ERROR_CODE WSAGetLastError() | |||
#define StrError PrintError | |||
typedef uint32_t uint; | |||
typedef int SOCKLEN; | |||
EXPORT const char* PrintError ( int error ); | |||
//JeckNetWinSocket*************************************************************************** | |||
class EXPORT JackNetWinSocket | |||
{ | |||
private: | |||
int fSockfd; | |||
int fPort; | |||
SOCKADDR_IN fSendAddr; | |||
SOCKADDR_IN fRecvAddr; | |||
public: | |||
JackNetWinSocket(); | |||
JackNetWinSocket ( const char* ip, int port ); | |||
~JackNetWinSocket(); | |||
//socket management | |||
int NewSocket(); | |||
int Bind(); | |||
int BindWith ( const char* ip ); | |||
int BindWith ( int port ); | |||
int Connect(); | |||
int ConnectTo ( const char* ip ); | |||
void Close(); | |||
void Reset(); | |||
bool IsSocket(); | |||
//IP/PORT management | |||
void SetPort ( int port ); | |||
int GetPort(); | |||
//address management | |||
int SetAddress ( const char* ip, int port ); | |||
char* GetSendIP(); | |||
char* GetRecvIP(); | |||
//utility | |||
int GetName ( char* name ); | |||
int JoinMCastGroup ( const char* mcast_ip ); | |||
void CopyParams ( JackNetWinSocket* socket ); | |||
//options management | |||
int SetOption ( int level, int optname, const void* optval, SOCKLEN optlen ); | |||
int GetOption ( int level, int optname, void* optval, SOCKLEN* optlen ); | |||
//timeout | |||
int SetTimeOut ( int& msec ); | |||
//local loop | |||
int SetLocalLoop(); | |||
//network operations | |||
int SendTo ( const void* buffer, size_t nbytes, int flags ); | |||
int SendTo ( const void* buffer, size_t nbytes, int flags, const char* ip ); | |||
int Send ( const void* buffer, size_t nbytes, int flags ); | |||
int RecvFrom ( void* buffer, size_t nbytes, int flags ); | |||
int Recv ( void* buffer, size_t nbytes, int flags ); | |||
int CatchHost ( void* buffer, size_t nbytes, int flags ); | |||
//error management | |||
net_error_t GetError(); | |||
}; | |||
} | |||
#endif |
@@ -0,0 +1,294 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackPortAudioDevices.h" | |||
#include "JackError.h" | |||
using namespace std; | |||
PortAudioDevices::PortAudioDevices() | |||
{ | |||
PaError err; | |||
if ( ( err = Pa_Initialize() ) == paNoError ) | |||
{ | |||
fNumHostApi = Pa_GetHostApiCount(); | |||
fNumDevice = Pa_GetDeviceCount(); | |||
fDeviceInfo = new PaDeviceInfo*[fNumDevice]; | |||
for ( PaDeviceIndex id = 0; id < fNumDevice; id++ ) | |||
fDeviceInfo[id] = const_cast<PaDeviceInfo*>(Pa_GetDeviceInfo(id)); | |||
fHostName = new string[fNumHostApi]; | |||
for ( PaHostApiIndex id = 0; id < fNumHostApi; id++ ) | |||
fHostName[id] = string ( Pa_GetHostApiInfo(id)->name ); | |||
} | |||
else | |||
printf("JackPortAudioDriver::Pa_Initialize error = %s\n", Pa_GetErrorText(err)); | |||
} | |||
PortAudioDevices::~PortAudioDevices() | |||
{ | |||
Pa_Terminate(); | |||
delete[] fDeviceInfo; | |||
delete[] fHostName; | |||
} | |||
PaDeviceIndex PortAudioDevices::GetNumDevice() | |||
{ | |||
return fNumDevice; | |||
} | |||
PaDeviceInfo* PortAudioDevices::GetDeviceInfo ( PaDeviceIndex id ) | |||
{ | |||
return fDeviceInfo[id]; | |||
} | |||
string PortAudioDevices::GetDeviceName ( PaDeviceIndex id ) | |||
{ | |||
return string ( fDeviceInfo[id]->name ); | |||
} | |||
string PortAudioDevices::GetHostFromDevice ( PaDeviceInfo* device ) | |||
{ | |||
return fHostName[device->hostApi]; | |||
} | |||
string PortAudioDevices::GetHostFromDevice ( PaDeviceIndex id ) | |||
{ | |||
return fHostName[fDeviceInfo[id]->hostApi]; | |||
} | |||
string PortAudioDevices::GetFullName ( PaDeviceIndex id ) | |||
{ | |||
string hostname = GetHostFromDevice ( id ); | |||
string devicename = GetDeviceName ( id ); | |||
//some hostname are quite long...use shortcuts | |||
if ( hostname.compare ( "Windows DirectSound" ) == 0 ) | |||
hostname = string ( "DirectSound" ); | |||
return ( hostname + "::" + devicename ); | |||
} | |||
string PortAudioDevices::GetFullName ( std::string hostname, std::string devicename ) | |||
{ | |||
//some hostname are quite long...use shortcuts | |||
if ( hostname.compare ( "Windows DirectSound" ) == 0 ) | |||
hostname = string ( "DirectSound" ); | |||
return ( hostname + "::" + devicename ); | |||
} | |||
PaDeviceInfo* PortAudioDevices::GetDeviceFromFullName ( string fullname, PaDeviceIndex& id ) | |||
{ | |||
PaDeviceInfo* ret = NULL; | |||
//no driver to find | |||
if ( fullname.size() == 0 ) | |||
return NULL; | |||
//first get host and device names from fullname | |||
string::size_type separator = fullname.find ( "::", 0 ); | |||
if ( separator == 0 ) | |||
return NULL; | |||
char hostname[separator + 9]; | |||
fill_n ( hostname, separator + 9, 0 ); | |||
fullname.copy ( hostname, separator ); | |||
//we need the entire hostname, replace shortcuts | |||
if ( strcmp ( hostname, "DirectSound" ) == 0 ) | |||
strcpy ( hostname, "Windows DirectSound" ); | |||
string devicename = fullname.substr ( separator + 2 ); | |||
//then find the corresponding device | |||
for ( PaDeviceIndex dev_id = 0; dev_id < fNumDevice; dev_id++ ) | |||
{ | |||
if ( ( GetHostFromDevice(dev_id).compare(hostname) == 0 ) && ( GetDeviceName(dev_id).compare(devicename) == 0 ) ) | |||
{ | |||
id = dev_id; | |||
ret = fDeviceInfo[dev_id]; | |||
} | |||
} | |||
return ret; | |||
} | |||
void PortAudioDevices::PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters) | |||
{ | |||
static double standardSampleRates[] = | |||
{ | |||
8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, | |||
44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1 /* negative terminated list */ | |||
}; | |||
int i, printCount; | |||
PaError err; | |||
printCount = 0; | |||
for (i = 0; standardSampleRates[i] > 0; i++) | |||
{ | |||
err = Pa_IsFormatSupported(inputParameters, outputParameters, standardSampleRates[i]); | |||
if (err == paFormatIsSupported) | |||
{ | |||
if (printCount == 0) | |||
{ | |||
printf("\t%8.2f", standardSampleRates[i]); | |||
printCount = 1; | |||
} | |||
else if (printCount == 4) | |||
{ | |||
printf(",\n\t%8.2f", standardSampleRates[i]); | |||
printCount = 1; | |||
} | |||
else | |||
{ | |||
printf(", %8.2f", standardSampleRates[i]); | |||
++printCount; | |||
} | |||
} | |||
} | |||
if (!printCount) | |||
printf("None\n"); | |||
else | |||
printf("\n"); | |||
} | |||
int PortAudioDevices::GetInputDeviceFromName(const char* devicename, PaDeviceIndex& id, int& max_input) | |||
{ | |||
string fullname = string ( devicename ); | |||
PaDeviceInfo* device = GetDeviceFromFullName ( fullname, id ); | |||
if ( device ) | |||
max_input = device->maxInputChannels; | |||
else | |||
{ | |||
id = Pa_GetDefaultInputDevice(); | |||
if ( fullname.size() ) | |||
printf("Can't open %s, PortAudio will use default input device.\n", devicename); | |||
if ( id == paNoDevice ) | |||
return -1; | |||
max_input = GetDeviceInfo(id)->maxInputChannels; | |||
devicename = strdup ( GetDeviceInfo(id)->name ); | |||
} | |||
return id; | |||
} | |||
int PortAudioDevices::GetOutputDeviceFromName(const char* devicename, PaDeviceIndex& id, int& max_output) | |||
{ | |||
string fullname = string ( devicename ); | |||
PaDeviceInfo* device = GetDeviceFromFullName ( fullname, id ); | |||
if ( device ) | |||
max_output = device->maxOutputChannels; | |||
else | |||
{ | |||
id = Pa_GetDefaultOutputDevice(); | |||
if ( fullname.size() ) | |||
printf("Can't open %s, PortAudio will use default output device.\n", devicename); | |||
if ( id == paNoDevice ) | |||
return -1; | |||
max_output = GetDeviceInfo(id)->maxOutputChannels; | |||
devicename = strdup ( GetDeviceInfo(id)->name ); | |||
} | |||
return id; | |||
} | |||
void PortAudioDevices::DisplayDevicesNames() | |||
{ | |||
int def_display; | |||
PaStreamParameters inputParameters, outputParameters; | |||
printf ( "********************** Devices list, %d detected **********************\n", fNumDevice ); | |||
for ( PaDeviceIndex id = 0; id < fNumDevice; id++ ) | |||
{ | |||
printf ( "-------- device #%d ------------------------------------------------\n", id ); | |||
def_display = 0; | |||
if ( id == Pa_GetDefaultInputDevice() ) | |||
{ | |||
printf("[ Default Input"); | |||
def_display = 1; | |||
} | |||
else if ( id == Pa_GetHostApiInfo ( fDeviceInfo[id]->hostApi)->defaultInputDevice ) | |||
{ | |||
const PaHostApiInfo *host_info = Pa_GetHostApiInfo ( fDeviceInfo[id]->hostApi ); | |||
printf ( "[ Default %s Input", host_info->name ); | |||
def_display = 1; | |||
} | |||
if ( id == Pa_GetDefaultOutputDevice() ) | |||
{ | |||
printf ( ( def_display ? "," : "[" ) ); | |||
printf ( " Default Output" ); | |||
def_display = 1; | |||
} | |||
else if ( id == Pa_GetHostApiInfo ( fDeviceInfo[id]->hostApi )->defaultOutputDevice ) | |||
{ | |||
const PaHostApiInfo *host_info = Pa_GetHostApiInfo ( fDeviceInfo[id]->hostApi ); | |||
printf ( ( def_display ? "," : "[" ) ); | |||
printf ( " Default %s Output", host_info->name ); | |||
def_display = 1; | |||
} | |||
if ( def_display ) | |||
printf ( " ]\n" ); | |||
/* print device info fields */ | |||
printf ( "Name = %s\n", GetFullName ( id ).c_str() ); | |||
printf ( "Max inputs = %d\n", fDeviceInfo[id]->maxInputChannels ); | |||
printf ( "Max outputs = %d\n", fDeviceInfo[id]->maxOutputChannels ); | |||
#ifdef WIN32 | |||
/* ASIO specific latency information */ | |||
if ( Pa_GetHostApiInfo(fDeviceInfo[id]->hostApi)->type == paASIO ) | |||
{ | |||
long minLatency, maxLatency, preferredLatency, granularity; | |||
PaAsio_GetAvailableLatencyValues ( id, &minLatency, &maxLatency, &preferredLatency, &granularity ); | |||
printf ( "ASIO minimum buffer size = %ld\n", minLatency ); | |||
printf ( "ASIO maximum buffer size = %ld\n", maxLatency ); | |||
printf ( "ASIO preferred buffer size = %ld\n", preferredLatency ); | |||
if ( granularity == -1 ) | |||
printf ( "ASIO buffer granularity = power of 2\n" ); | |||
else | |||
printf ( "ASIO buffer granularity = %ld\n", granularity ); | |||
} | |||
#endif | |||
printf ( "Default sample rate = %8.2f\n", fDeviceInfo[id]->defaultSampleRate ); | |||
/* poll for standard sample rates */ | |||
inputParameters.device = id; | |||
inputParameters.channelCount = fDeviceInfo[id]->maxInputChannels; | |||
inputParameters.sampleFormat = paInt16; | |||
inputParameters.suggestedLatency = 0; /* ignored by Pa_IsFormatSupported() */ | |||
inputParameters.hostApiSpecificStreamInfo = NULL; | |||
outputParameters.device = id; | |||
outputParameters.channelCount = fDeviceInfo[id]->maxOutputChannels; | |||
outputParameters.sampleFormat = paInt16; | |||
outputParameters.suggestedLatency = 0; /* ignored by Pa_IsFormatSupported() */ | |||
outputParameters.hostApiSpecificStreamInfo = NULL; | |||
} | |||
printf ( "**************************** End of list ****************************\n" ); | |||
} | |||
bool PortAudioDevices::IsDuplex ( PaDeviceIndex id ) | |||
{ | |||
//does the device has in and out facilities | |||
if ( fDeviceInfo[id]->maxInputChannels && fDeviceInfo[id]->maxOutputChannels ) | |||
return true; | |||
//else is another complementary device ? (search in devices with the same name) | |||
for ( PaDeviceIndex i = 0; i < fNumDevice; i++ ) | |||
if ( ( i != id ) && ( GetDeviceName ( i ) == GetDeviceName ( id ) ) ) | |||
if ( ( fDeviceInfo[i]->maxInputChannels && fDeviceInfo[id]->maxOutputChannels ) | |||
|| ( fDeviceInfo[i]->maxOutputChannels && fDeviceInfo[id]->maxInputChannels ) ) | |||
return true; | |||
//then the device isn't full duplex | |||
return false; | |||
} |
@@ -0,0 +1,62 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __PortAudioDevices__ | |||
#define __PortAudioDevices__ | |||
#include <iostream> | |||
#include <cstring> | |||
#include <cstdio> | |||
#include <string> | |||
#include <cstdlib> | |||
#include "portaudio.h" | |||
#include "pa_asio.h" | |||
/*! | |||
\brief A PortAudio Devices manager. | |||
*/ | |||
class PortAudioDevices | |||
{ | |||
private: | |||
PaHostApiIndex fNumHostApi; //number of hosts | |||
PaDeviceIndex fNumDevice; //number of devices | |||
PaDeviceInfo** fDeviceInfo; //array of device info | |||
std::string* fHostName; //array of host names (matched with host id's) | |||
public: | |||
PortAudioDevices(); | |||
~PortAudioDevices(); | |||
PaDeviceIndex GetNumDevice(); | |||
PaDeviceInfo* GetDeviceInfo(PaDeviceIndex id); | |||
std::string GetDeviceName(PaDeviceIndex id); | |||
std::string GetHostFromDevice(PaDeviceInfo* device); | |||
std::string GetHostFromDevice(PaDeviceIndex id); | |||
std::string GetFullName(PaDeviceIndex id); | |||
std::string GetFullName(std::string hostname, std::string devicename); | |||
PaDeviceInfo* GetDeviceFromFullName(std::string fullname, PaDeviceIndex& id); | |||
void PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters); | |||
int GetInputDeviceFromName(const char* name, PaDeviceIndex& device, int& in_max); | |||
int GetOutputDeviceFromName(const char* name, PaDeviceIndex& device, int& out_max); | |||
void DisplayDevicesNames(); | |||
bool IsDuplex ( PaDeviceIndex id ); | |||
}; | |||
#endif |
@@ -25,7 +25,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#pragma warning (disable : 4786) | |||
#endif | |||
#include "pa_asio.h" | |||
#include "JackDriverLoader.h" | |||
#include "driver_interface.h" | |||
#include "JackPortAudioDriver.h" | |||
@@ -36,417 +35,233 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#include <iostream> | |||
#include <assert.h> | |||
namespace Jack | |||
{ | |||
using namespace std; | |||
void JackPortAudioDriver::PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters) | |||
namespace Jack | |||
{ | |||
static double standardSampleRates[] = { | |||
8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, | |||
44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1 /* negative terminated list */ | |||
}; | |||
int i, printCount; | |||
PaError err; | |||
printCount = 0; | |||
for (i = 0; standardSampleRates[i] > 0; i++) { | |||
err = Pa_IsFormatSupported(inputParameters, outputParameters, standardSampleRates[i]); | |||
if (err == paFormatIsSupported) { | |||
if (printCount == 0) { | |||
printf("\t%8.2f", standardSampleRates[i]); | |||
printCount = 1; | |||
} else if (printCount == 4) { | |||
printf(",\n\t%8.2f", standardSampleRates[i]); | |||
printCount = 1; | |||
} else { | |||
printf(", %8.2f", standardSampleRates[i]); | |||
++printCount; | |||
} | |||
} | |||
int JackPortAudioDriver::Render(const void* inputBuffer, void* outputBuffer, | |||
unsigned long framesPerBuffer, | |||
const PaStreamCallbackTimeInfo* timeInfo, | |||
PaStreamCallbackFlags statusFlags, | |||
void* userData) | |||
{ | |||
JackPortAudioDriver* driver = (JackPortAudioDriver*)userData; | |||
driver->fInputBuffer = (float**)inputBuffer; | |||
driver->fOutputBuffer = (float**)outputBuffer; | |||
// Setup threadded based log function | |||
set_threaded_log_function(); | |||
driver->CycleTakeBeginTime(); | |||
return (driver->Process() == 0) ? paContinue : paAbort; | |||
} | |||
if (!printCount) | |||
printf("None\n"); | |||
else | |||
printf("\n"); | |||
} | |||
bool JackPortAudioDriver::GetInputDeviceFromName(const char* name, PaDeviceIndex* device, int* in_max) | |||
{ | |||
const PaDeviceInfo* deviceInfo; | |||
PaDeviceIndex numDevices = Pa_GetDeviceCount(); | |||
for (int i = 0; i < numDevices; i++) { | |||
deviceInfo = Pa_GetDeviceInfo(i); | |||
if (strcmp(name, deviceInfo->name) == 0) { | |||
*device = i; | |||
*in_max = deviceInfo->maxInputChannels; | |||
return true; | |||
int JackPortAudioDriver::Read() | |||
{ | |||
for (int i = 0; i < fCaptureChannels; i++) | |||
{ | |||
memcpy(GetInputBuffer(i), fInputBuffer[i], sizeof(float) * fEngineControl->fBufferSize); | |||
} | |||
return 0; | |||
} | |||
return false; | |||
} | |||
bool JackPortAudioDriver::GetOutputDeviceFromName(const char* name, PaDeviceIndex* device, int* out_max) | |||
{ | |||
const PaDeviceInfo* deviceInfo; | |||
PaDeviceIndex numDevices = Pa_GetDeviceCount(); | |||
for (int i = 0; i < numDevices; i++) { | |||
deviceInfo = Pa_GetDeviceInfo(i); | |||
if (strcmp(name, deviceInfo->name) == 0) { | |||
*device = i; | |||
*out_max = deviceInfo->maxOutputChannels; | |||
return true; | |||
int JackPortAudioDriver::Write() | |||
{ | |||
for (int i = 0; i < fPlaybackChannels; i++) | |||
{ | |||
memcpy(fOutputBuffer[i], GetOutputBuffer(i), sizeof(float) * fEngineControl->fBufferSize); | |||
} | |||
return 0; | |||
} | |||
return false; | |||
} | |||
static void DisplayDeviceNames() | |||
{ | |||
PaError err; | |||
const PaDeviceInfo* deviceInfo; | |||
PaStreamParameters inputParameters, outputParameters; | |||
int defaultDisplayed; | |||
err = Pa_Initialize(); | |||
if (err != paNoError) | |||
return ; | |||
PaDeviceIndex numDevices = Pa_GetDeviceCount(); | |||
printf("Number of devices = %d\n", numDevices); | |||
for (int i = 0; i < numDevices; i++) { | |||
deviceInfo = Pa_GetDeviceInfo(i); | |||
printf( "--------------------------------------- device #%d\n", i ); | |||
/* Mark global and API specific default devices */ | |||
defaultDisplayed = 0; | |||
if (i == Pa_GetDefaultInputDevice()) { | |||
printf("[ Default Input"); | |||
defaultDisplayed = 1; | |||
} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultInputDevice) { | |||
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi); | |||
printf("[ Default %s Input", hostInfo->name); | |||
defaultDisplayed = 1; | |||
int JackPortAudioDriver::Open(jack_nframes_t nframes, | |||
jack_nframes_t samplerate, | |||
bool capturing, | |||
bool playing, | |||
int inchannels, | |||
int outchannels, | |||
bool monitor, | |||
const char* capture_driver_uid, | |||
const char* playback_driver_uid, | |||
jack_nframes_t capture_latency, | |||
jack_nframes_t playback_latency) | |||
{ | |||
PaError err; | |||
PaStreamParameters inputParameters; | |||
PaStreamParameters outputParameters; | |||
int in_max = 0; | |||
int out_max = 0; | |||
jack_log("JackPortAudioDriver::Open nframes = %ld in = %ld out = %ld capture name = %s playback name = %s samplerate = %ld", | |||
nframes, inchannels, outchannels, capture_driver_uid, playback_driver_uid, samplerate); | |||
// Generic JackAudioDriver Open | |||
if (JackAudioDriver::Open(nframes, samplerate, capturing, playing, inchannels, outchannels, monitor, capture_driver_uid, playback_driver_uid, capture_latency, playback_latency) != 0) | |||
{ | |||
return -1; | |||
} | |||
if (i == Pa_GetDefaultOutputDevice()) { | |||
printf((defaultDisplayed ? "," : "[")); | |||
printf(" Default Output"); | |||
defaultDisplayed = 1; | |||
} else if (i == Pa_GetHostApiInfo(deviceInfo->hostApi)->defaultOutputDevice) { | |||
const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo(deviceInfo->hostApi); | |||
printf((defaultDisplayed ? "," : "[")); | |||
printf(" Default %s Output", hostInfo->name); | |||
defaultDisplayed = 1; | |||
//get devices | |||
if (capturing) | |||
{ | |||
if (fPaDevices->GetInputDeviceFromName(capture_driver_uid, fInputDevice, in_max) < 0) | |||
goto error; | |||
} | |||
if (playing) | |||
{ | |||
if (fPaDevices->GetOutputDeviceFromName(playback_driver_uid, fOutputDevice, out_max) < 0) | |||
goto error; | |||
} | |||
if (defaultDisplayed) | |||
printf(" ]\n"); | |||
/* print device info fields */ | |||
printf("Name = %s\n", deviceInfo->name); | |||
printf("Host API = %s\n", Pa_GetHostApiInfo(deviceInfo->hostApi)->name); | |||
printf("Max inputs = %d", deviceInfo->maxInputChannels); | |||
printf(", Max outputs = %d\n", deviceInfo->maxOutputChannels); | |||
/* | |||
printf("Default low input latency = %8.3f\n", deviceInfo->defaultLowInputLatency); | |||
printf("Default low output latency = %8.3f\n", deviceInfo->defaultLowOutputLatency); | |||
printf("Default high input latency = %8.3f\n", deviceInfo->defaultHighInputLatency); | |||
printf("Default high output latency = %8.3f\n", deviceInfo->defaultHighOutputLatency); | |||
*/ | |||
#ifdef WIN32 | |||
#ifndef PA_NO_ASIO | |||
/* ASIO specific latency information */ | |||
if (Pa_GetHostApiInfo(deviceInfo->hostApi)->type == paASIO) { | |||
long minLatency, maxLatency, preferredLatency, granularity; | |||
err = PaAsio_GetAvailableLatencyValues(i, &minLatency, &maxLatency, &preferredLatency, &granularity); | |||
printf("ASIO minimum buffer size = %ld\n", minLatency); | |||
printf("ASIO maximum buffer size = %ld\n", maxLatency); | |||
printf("ASIO preferred buffer size = %ld\n", preferredLatency); | |||
if (granularity == -1) | |||
printf("ASIO buffer granularity = power of 2\n"); | |||
else | |||
printf("ASIO buffer granularity = %ld\n", granularity); | |||
//default channels number required | |||
if (inchannels == 0) | |||
{ | |||
jack_log("JackPortAudioDriver::Open setup max in channels = %ld", in_max); | |||
inchannels = in_max; | |||
} | |||
if (outchannels == 0) | |||
{ | |||
jack_log("JackPortAudioDriver::Open setup max out channels = %ld", out_max); | |||
outchannels = out_max; | |||
} | |||
#endif /* !PA_NO_ASIO */ | |||
#endif /* WIN32 */ | |||
printf("Default sample rate = %8.2f\n", deviceInfo->defaultSampleRate); | |||
//doesn't have enough in/out channels...exit | |||
if (inchannels > in_max) | |||
{ | |||
jack_error("This device hasn't required input channels inchannels = %ld in_max = %ld", inchannels, in_max); | |||
goto error; | |||
} | |||
if (outchannels > out_max) | |||
{ | |||
jack_error("This device hasn't required output channels outchannels = %ld out_max = %ld", outchannels, out_max); | |||
goto error; | |||
} | |||
/* poll for standard sample rates */ | |||
inputParameters.device = i; | |||
inputParameters.channelCount = deviceInfo->maxInputChannels; | |||
inputParameters.sampleFormat = paInt16; | |||
inputParameters.suggestedLatency = 0; /* ignored by Pa_IsFormatSupported() */ | |||
//in/output streams parametering | |||
inputParameters.device = fInputDevice; | |||
inputParameters.channelCount = inchannels; | |||
inputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
inputParameters.suggestedLatency = (fInputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency | |||
: 0; | |||
inputParameters.hostApiSpecificStreamInfo = NULL; | |||
outputParameters.device = i; | |||
outputParameters.channelCount = deviceInfo->maxOutputChannels; | |||
outputParameters.sampleFormat = paInt16; | |||
outputParameters.suggestedLatency = 0; /* ignored by Pa_IsFormatSupported() */ | |||
outputParameters.device = fOutputDevice; | |||
outputParameters.channelCount = outchannels; | |||
outputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
outputParameters.suggestedLatency = (fOutputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency | |||
: 0; | |||
outputParameters.hostApiSpecificStreamInfo = NULL; | |||
/* | |||
if (inputParameters.channelCount > 0) { | |||
printf("Supported standard sample rates\n for half-duplex 16 bit %d channel input = \n", inputParameters.channelCount); | |||
PrintSupportedStandardSampleRates(&inputParameters, NULL); | |||
} | |||
if (outputParameters.channelCount > 0) { | |||
printf("Supported standard sample rates\n for half-duplex 16 bit %d channel output = \n", outputParameters.channelCount); | |||
PrintSupportedStandardSampleRates(NULL, &outputParameters); | |||
} | |||
if (inputParameters.channelCount > 0 && outputParameters.channelCount > 0) { | |||
printf("Supported standard sample rates\n for full-duplex 16 bit %d channel input, %d channel output = \n", | |||
inputParameters.channelCount, outputParameters.channelCount ); | |||
PrintSupportedStandardSampleRates(&inputParameters, &outputParameters); | |||
} | |||
*/ | |||
} | |||
Pa_Terminate(); | |||
} | |||
int JackPortAudioDriver::Render(const void* inputBuffer, void* outputBuffer, | |||
unsigned long framesPerBuffer, | |||
const PaStreamCallbackTimeInfo* timeInfo, | |||
PaStreamCallbackFlags statusFlags, | |||
void* userData) | |||
{ | |||
JackPortAudioDriver* driver = (JackPortAudioDriver*)userData; | |||
driver->fInputBuffer = (float**)inputBuffer; | |||
driver->fOutputBuffer = (float**)outputBuffer; | |||
// Setup threadded based log function | |||
set_threaded_log_function(); | |||
driver->CycleTakeBeginTime(); | |||
return (driver->Process() == 0) ? paContinue : paAbort; | |||
} | |||
int JackPortAudioDriver::Read() | |||
{ | |||
for (int i = 0; i < fCaptureChannels; i++) { | |||
memcpy(GetInputBuffer(i), fInputBuffer[i], sizeof(float) * fEngineControl->fBufferSize); | |||
} | |||
return 0; | |||
} | |||
err = Pa_OpenStream(&fStream, | |||
(fInputDevice == paNoDevice) ? 0 : &inputParameters, | |||
(fOutputDevice == paNoDevice) ? 0 : &outputParameters, | |||
samplerate, | |||
nframes, | |||
paNoFlag, // Clipping is on... | |||
Render, | |||
this); | |||
if (err != paNoError) | |||
{ | |||
jack_error("Pa_OpenStream error = %s\n", Pa_GetErrorText(err)); | |||
goto error; | |||
} | |||
int JackPortAudioDriver::Write() | |||
{ | |||
for (int i = 0; i < fPlaybackChannels; i++) { | |||
memcpy(fOutputBuffer[i], GetOutputBuffer(i), sizeof(float) * fEngineControl->fBufferSize); | |||
} | |||
return 0; | |||
} | |||
#ifdef __APPLE__ | |||
fEngineControl->fPeriod = fEngineControl->fPeriodUsecs * 1000; | |||
fEngineControl->fComputation = 500 * 1000; | |||
fEngineControl->fConstraint = fEngineControl->fPeriodUsecs * 1000; | |||
#endif | |||
int JackPortAudioDriver::Open(jack_nframes_t nframes, | |||
jack_nframes_t samplerate, | |||
bool capturing, | |||
bool playing, | |||
int inchannels, | |||
int outchannels, | |||
bool monitor, | |||
const char* capture_driver_uid, | |||
const char* playback_driver_uid, | |||
jack_nframes_t capture_latency, | |||
jack_nframes_t playback_latency) | |||
{ | |||
PaError err; | |||
PaStreamParameters inputParameters; | |||
PaStreamParameters outputParameters; | |||
const PaDeviceInfo* deviceInfo; | |||
int in_max = 0; | |||
int out_max = 0; | |||
jack_log("JackPortAudioDriver::Open nframes = %ld in = %ld out = %ld capture name = %s playback name = %s samplerate = %ld", | |||
nframes, inchannels, outchannels, capture_driver_uid, playback_driver_uid, samplerate); | |||
// Generic JackAudioDriver Open | |||
if (JackAudioDriver::Open(nframes, samplerate, capturing, playing, inchannels, outchannels, monitor, capture_driver_uid, playback_driver_uid, capture_latency, playback_latency) != 0) { | |||
return -1; | |||
} | |||
// Core driver may have changed the in/out values | |||
fCaptureChannels = inchannels; | |||
fPlaybackChannels = outchannels; | |||
err = Pa_Initialize(); | |||
if (err != paNoError) { | |||
jack_error("JackPortAudioDriver::Pa_Initialize error = %s\n", Pa_GetErrorText(err)); | |||
goto error; | |||
} | |||
assert(strlen(capture_driver_uid) < JACK_CLIENT_NAME_SIZE); | |||
assert(strlen(playback_driver_uid) < JACK_CLIENT_NAME_SIZE); | |||
jack_log("JackPortAudioDriver::Pa_GetDefaultInputDevice %ld", Pa_GetDefaultInputDevice()); | |||
jack_log("JackPortAudioDriver::Pa_GetDefaultOutputDevice %ld", Pa_GetDefaultOutputDevice()); | |||
strcpy(fCaptureDriverName, capture_driver_uid); | |||
strcpy(fPlaybackDriverName, playback_driver_uid); | |||
if (capturing) { | |||
if (!GetInputDeviceFromName(capture_driver_uid, &fInputDevice, &in_max)) { | |||
jack_log("JackPortAudioDriver::GetInputDeviceFromName cannot open %s", capture_driver_uid); | |||
fInputDevice = Pa_GetDefaultInputDevice(); | |||
if (fInputDevice == paNoDevice) | |||
goto error; | |||
deviceInfo = Pa_GetDeviceInfo(fInputDevice); | |||
in_max = deviceInfo->maxInputChannels; | |||
capture_driver_uid = strdup(deviceInfo->name); | |||
} | |||
} | |||
return 0; | |||
if (inchannels > in_max) { | |||
jack_error("This device hasn't required input channels inchannels = %ld in_max = %ld", inchannels, in_max); | |||
goto error; | |||
} | |||
if (playing) { | |||
if (!GetOutputDeviceFromName(playback_driver_uid, &fOutputDevice, &out_max)) { | |||
jack_log("JackPortAudioDriver::GetOutputDeviceFromName cannot open %s", playback_driver_uid); | |||
fOutputDevice = Pa_GetDefaultOutputDevice(); | |||
if (fOutputDevice == paNoDevice) | |||
goto error; | |||
deviceInfo = Pa_GetDeviceInfo(fOutputDevice); | |||
out_max = deviceInfo->maxOutputChannels; | |||
playback_driver_uid = strdup(deviceInfo->name); | |||
} | |||
} | |||
if (outchannels > out_max) { | |||
jack_error("This device hasn't required output channels outchannels = %ld out_max = %ld", outchannels, out_max); | |||
goto error; | |||
error: | |||
jack_error ( "Can't open default PortAudio device : %s", Pa_GetErrorText(err) ); | |||
return -1; | |||
} | |||
if (inchannels == 0) { | |||
jack_log("JackPortAudioDriver::Open setup max in channels = %ld", in_max); | |||
inchannels = in_max; | |||
int JackPortAudioDriver::Close() | |||
{ | |||
JackAudioDriver::Close(); | |||
jack_log("JackPortAudioDriver::Close"); | |||
Pa_CloseStream(fStream); | |||
delete fPaDevices; | |||
return 0; | |||
} | |||
if (outchannels == 0) { | |||
jack_log("JackPortAudioDriver::Open setup max out channels = %ld", out_max); | |||
outchannels = out_max; | |||
int JackPortAudioDriver::Start() | |||
{ | |||
jack_log("JackPortAudioDriver::Start"); | |||
JackAudioDriver::Start(); | |||
PaError err = Pa_StartStream(fStream); | |||
return (err == paNoError) ? 0 : -1; | |||
} | |||
inputParameters.device = fInputDevice; | |||
inputParameters.channelCount = inchannels; | |||
inputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
inputParameters.suggestedLatency = (fInputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency | |||
: 0; | |||
inputParameters.hostApiSpecificStreamInfo = NULL; | |||
outputParameters.device = fOutputDevice; | |||
outputParameters.channelCount = outchannels; | |||
outputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
outputParameters.suggestedLatency = (fOutputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency | |||
: 0; | |||
outputParameters.hostApiSpecificStreamInfo = NULL; | |||
err = Pa_OpenStream(&fStream, | |||
(fInputDevice == paNoDevice) ? 0 : &inputParameters, | |||
(fOutputDevice == paNoDevice) ? 0 : &outputParameters, | |||
samplerate, | |||
nframes, | |||
paNoFlag, // Clipping is on... | |||
Render, | |||
this); | |||
if (err != paNoError) { | |||
jack_error("Pa_OpenStream error = %s\n", Pa_GetErrorText(err)); | |||
goto error; | |||
int JackPortAudioDriver::Stop() | |||
{ | |||
jack_log("JackPortAudioDriver::Stop"); | |||
PaError err = Pa_StopStream(fStream); | |||
return (err == paNoError) ? 0 : -1; | |||
} | |||
#ifdef __APPLE__ | |||
fEngineControl->fPeriod = fEngineControl->fPeriodUsecs * 1000; | |||
fEngineControl->fComputation = 500 * 1000; | |||
fEngineControl->fConstraint = fEngineControl->fPeriodUsecs * 1000; | |||
#endif | |||
// Core driver may have changed the in/out values | |||
fCaptureChannels = inchannels; | |||
fPlaybackChannels = outchannels; | |||
assert(strlen(capture_driver_uid) < JACK_CLIENT_NAME_SIZE); | |||
assert(strlen(playback_driver_uid) < JACK_CLIENT_NAME_SIZE); | |||
strcpy(fCaptureDriverName, capture_driver_uid); | |||
strcpy(fPlaybackDriverName, playback_driver_uid); | |||
int JackPortAudioDriver::SetBufferSize(jack_nframes_t buffer_size) | |||
{ | |||
PaError err; | |||
PaStreamParameters inputParameters; | |||
PaStreamParameters outputParameters; | |||
return 0; | |||
error: | |||
Pa_Terminate(); | |||
return -1; | |||
} | |||
int JackPortAudioDriver::Close() | |||
{ | |||
JackAudioDriver::Close(); | |||
jack_log("JackPortAudioDriver::Close"); | |||
Pa_CloseStream(fStream); | |||
Pa_Terminate(); | |||
return 0; | |||
} | |||
int JackPortAudioDriver::Start() | |||
{ | |||
jack_log("JackPortAudioDriver::Start"); | |||
JackAudioDriver::Start(); | |||
PaError err = Pa_StartStream(fStream); | |||
return (err == paNoError) ? 0 : -1; | |||
} | |||
int JackPortAudioDriver::Stop() | |||
{ | |||
jack_log("JackPortAudioDriver::Stop"); | |||
PaError err = Pa_StopStream(fStream); | |||
return (err == paNoError) ? 0 : -1; | |||
} | |||
if ((err = Pa_CloseStream(fStream)) != paNoError) | |||
{ | |||
jack_error("Pa_CloseStream error = %s\n", Pa_GetErrorText(err)); | |||
return -1; | |||
} | |||
int JackPortAudioDriver::SetBufferSize(jack_nframes_t buffer_size) | |||
{ | |||
PaError err; | |||
PaStreamParameters inputParameters; | |||
PaStreamParameters outputParameters; | |||
//change parametering | |||
inputParameters.device = fInputDevice; | |||
inputParameters.channelCount = fCaptureChannels; | |||
inputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
inputParameters.suggestedLatency = (fInputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency | |||
: 0; | |||
inputParameters.hostApiSpecificStreamInfo = NULL; | |||
if ((err = Pa_CloseStream(fStream)) != paNoError) { | |||
jack_error("Pa_CloseStream error = %s", Pa_GetErrorText(err)); | |||
return -1; | |||
} | |||
outputParameters.device = fOutputDevice; | |||
outputParameters.channelCount = fPlaybackChannels; | |||
outputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
outputParameters.suggestedLatency = (fOutputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency | |||
: 0; | |||
outputParameters.hostApiSpecificStreamInfo = NULL; | |||
inputParameters.device = fInputDevice; | |||
inputParameters.channelCount = fCaptureChannels; | |||
inputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
inputParameters.suggestedLatency = (fInputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(inputParameters.device)->defaultLowInputLatency | |||
: 0; | |||
inputParameters.hostApiSpecificStreamInfo = NULL; | |||
outputParameters.device = fOutputDevice; | |||
outputParameters.channelCount = fPlaybackChannels; | |||
outputParameters.sampleFormat = paFloat32 | paNonInterleaved; // 32 bit floating point output | |||
outputParameters.suggestedLatency = (fOutputDevice != paNoDevice) // TODO: check how to setup this on ASIO | |||
? Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency | |||
: 0; | |||
outputParameters.hostApiSpecificStreamInfo = NULL; | |||
err = Pa_OpenStream(&fStream, | |||
(fInputDevice == paNoDevice) ? 0 : &inputParameters, | |||
(fOutputDevice == paNoDevice) ? 0 : &outputParameters, | |||
fEngineControl->fSampleRate, | |||
buffer_size, | |||
paNoFlag, // Clipping is on... | |||
Render, | |||
this); | |||
if (err != paNoError) { | |||
jack_error("Pa_OpenStream error = %s", Pa_GetErrorText(err)); | |||
return -1; | |||
} else { | |||
// Only done when success | |||
return JackAudioDriver::SetBufferSize(buffer_size); // never fails | |||
err = Pa_OpenStream(&fStream, | |||
(fInputDevice == paNoDevice) ? 0 : &inputParameters, | |||
(fOutputDevice == paNoDevice) ? 0 : &outputParameters, | |||
fEngineControl->fSampleRate, | |||
buffer_size, | |||
paNoFlag, // Clipping is on... | |||
Render, | |||
this); | |||
if (err != paNoError) | |||
{ | |||
jack_error("Pa_OpenStream error = %s\n", Pa_GetErrorText(err)); | |||
return -1; | |||
} | |||
else | |||
{ | |||
// Only done when success | |||
return JackAudioDriver::SetBufferSize(buffer_size); // never fails | |||
} | |||
} | |||
} | |||
} // end of namespace | |||
@@ -457,7 +272,8 @@ extern "C" | |||
#include "JackExports.h" | |||
EXPORT jack_driver_desc_t* driver_get_descriptor() { | |||
EXPORT jack_driver_desc_t* driver_get_descriptor() | |||
{ | |||
jack_driver_desc_t *desc; | |||
unsigned int i; | |||
desc = (jack_driver_desc_t*)calloc(1, sizeof(jack_driver_desc_t)); | |||
@@ -575,98 +391,108 @@ extern "C" | |||
return desc; | |||
} | |||
EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) { | |||
EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) | |||
{ | |||
jack_nframes_t srate = 44100; | |||
jack_nframes_t frames_per_interrupt = 512; | |||
const char* capture_pcm_name = ""; | |||
const char* playback_pcm_name = ""; | |||
int capture = FALSE; | |||
int playback = FALSE; | |||
int chan_in = 0; | |||
int chan_out = 0; | |||
bool monitor = false; | |||
char* capture_pcm_name = "winmme"; | |||
char* playback_pcm_name = "winmme"; | |||
const JSList *node; | |||
const jack_driver_param_t *param; | |||
jack_nframes_t systemic_input_latency = 0; | |||
jack_nframes_t systemic_output_latency = 0; | |||
PortAudioDevices* pa_devices = new PortAudioDevices(); | |||
for (node = params; node; node = jack_slist_next(node)) { | |||
for (node = params; node; node = jack_slist_next(node)) | |||
{ | |||
param = (const jack_driver_param_t *) node->data; | |||
switch (param->character) { | |||
switch (param->character) | |||
{ | |||
case 'd': | |||
capture_pcm_name = strdup(param->value.str); | |||
playback_pcm_name = strdup(param->value.str); | |||
break; | |||
case 'D': | |||
capture = TRUE; | |||
playback = TRUE; | |||
break; | |||
case 'd': | |||
case 'c': | |||
chan_in = chan_out = (int) param->value.ui; | |||
break; | |||
case 'i': | |||
chan_in = (int) param->value.ui; | |||
break; | |||
case 'o': | |||
chan_out = (int) param->value.ui; | |||
break; | |||
case 'C': | |||
capture = TRUE; | |||
if (strcmp(param->value.str, "none") != 0) | |||
{ | |||
capture_pcm_name = strdup(param->value.str); | |||
} | |||
break; | |||
case 'P': | |||
playback = TRUE; | |||
if (strcmp(param->value.str, "none") != 0) | |||
{ | |||
playback_pcm_name = strdup(param->value.str); | |||
break; | |||
case 'D': | |||
capture = TRUE; | |||
playback = TRUE; | |||
break; | |||
case 'c': | |||
chan_in = chan_out = (int) param->value.ui; | |||
break; | |||
case 'i': | |||
chan_in = (int) param->value.ui; | |||
break; | |||
case 'o': | |||
chan_out = (int) param->value.ui; | |||
break; | |||
case 'C': | |||
capture = TRUE; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
capture_pcm_name = strdup(param->value.str); | |||
} | |||
break; | |||
case 'P': | |||
playback = TRUE; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
playback_pcm_name = strdup(param->value.str); | |||
} | |||
break; | |||
case 'm': | |||
monitor = param->value.i; | |||
break; | |||
case 'r': | |||
srate = param->value.ui; | |||
break; | |||
case 'p': | |||
frames_per_interrupt = (unsigned int) param->value.ui; | |||
break; | |||
case 'I': | |||
systemic_input_latency = param->value.ui; | |||
break; | |||
case 'O': | |||
systemic_output_latency = param->value.ui; | |||
break; | |||
case 'l': | |||
Jack::DisplayDeviceNames(); | |||
break; | |||
} | |||
break; | |||
case 'm': | |||
monitor = param->value.i; | |||
break; | |||
case 'r': | |||
srate = param->value.ui; | |||
break; | |||
case 'p': | |||
frames_per_interrupt = (unsigned int) param->value.ui; | |||
break; | |||
case 'I': | |||
systemic_input_latency = param->value.ui; | |||
break; | |||
case 'O': | |||
systemic_output_latency = param->value.ui; | |||
break; | |||
case 'l': | |||
pa_devices->DisplayDevicesNames(); | |||
break; | |||
} | |||
} | |||
// duplex is the default | |||
if (!capture && !playback) { | |||
if (!capture && !playback) | |||
{ | |||
capture = TRUE; | |||
playback = TRUE; | |||
} | |||
Jack::JackDriverClientInterface* driver = new Jack::JackPortAudioDriver("system", "portaudio", engine, table); | |||
if (driver->Open(frames_per_interrupt, srate, capture, playback, chan_in, chan_out, monitor, capture_pcm_name, playback_pcm_name, systemic_input_latency, systemic_output_latency) == 0) { | |||
Jack::JackDriverClientInterface* driver = new Jack::JackPortAudioDriver("system", "portaudio", engine, table, pa_devices); | |||
if (driver->Open(frames_per_interrupt, srate, capture, playback, chan_in, chan_out, monitor, capture_pcm_name, playback_pcm_name, systemic_input_latency, systemic_output_latency) == 0) | |||
{ | |||
return driver; | |||
} else { | |||
} | |||
else | |||
{ | |||
delete driver; | |||
return NULL; | |||
} | |||
@@ -21,7 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
#define __JackPortAudioDriver__ | |||
#include "JackAudioDriver.h" | |||
#include "portaudio.h" | |||
#include "JackPortAudioDevices.h" | |||
namespace Jack | |||
{ | |||
@@ -35,16 +35,13 @@ class JackPortAudioDriver : public JackAudioDriver | |||
private: | |||
PortAudioDevices* fPaDevices; | |||
PaStream* fStream; | |||
float** fInputBuffer; | |||
float** fOutputBuffer; | |||
PaDeviceIndex fInputDevice; | |||
PaDeviceIndex fOutputDevice; | |||
void PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters); | |||
bool GetInputDeviceFromName(const char* name, PaDeviceIndex* device, int* in_max); | |||
bool GetOutputDeviceFromName(const char* name, PaDeviceIndex* device, int* out_max); | |||
static int Render(const void* inputBuffer, void* outputBuffer, | |||
unsigned long framesPerBuffer, | |||
const PaStreamCallbackTimeInfo* timeInfo, | |||
@@ -53,10 +50,12 @@ class JackPortAudioDriver : public JackAudioDriver | |||
public: | |||
JackPortAudioDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) | |||
JackPortAudioDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, PortAudioDevices* pa_devices) | |||
: JackAudioDriver(name, alias, engine, table), fStream(NULL), fInputBuffer(NULL), fOutputBuffer(NULL), | |||
fInputDevice(paNoDevice), fOutputDevice(paNoDevice) | |||
{} | |||
{ | |||
fPaDevices = pa_devices; | |||
} | |||
virtual ~JackPortAudioDriver() | |||
{} | |||
@@ -364,6 +364,11 @@ int JackWinAsyncNamedPipeServer::Bind(const char* dir, const char* name, int whi | |||
} | |||
} | |||
bool JackWinAsyncNamedPipeServer::Accept() | |||
{ | |||
return false; | |||
} | |||
JackWinNamedPipeClient* JackWinAsyncNamedPipeServer::AcceptClient() | |||
{ | |||
if (ConnectNamedPipe(fNamedPipe, NULL)) { | |||
@@ -0,0 +1,54 @@ | |||
------------------------------- | |||
Jackmp on windows | |||
------------------------------- | |||
This folder contains all the windows specific sources. | |||
You will also find two sets of files : | |||
- VisualC++6 workspace and project files, in order to compile Jack with MSVC | |||
- Code::Blocks (8.02) workspace and project files, in order to compile Jack with MingW | |||
The built binaries will be located in '/Release/bin' (or '/Debug/bin' if you build the Debug target). Once compiled, you'll find there everything you need : | |||
- the two 'libjackmp.dll' and 'libjackservermp.dll', client and server jack libraries | |||
- the 'jackdmp.exe', main application : the jack server | |||
- the 'jack_xxx.exe' utilities and examples | |||
- in the jackmp directory, you'll find the driver's DLL's ('jack_portaudio.dll' and 'jack_netdriver.dll') and some tools ( 'netmanager.dll' for example ) | |||
In Code::Blocks all the projects are automatically built in a correct order (dll's then apps) by doing 'build->build workspace'. | |||
In VC6, you'll have to build the projects one by one. | |||
------------------------------- | |||
Notes about VC and GCC versions | |||
------------------------------- | |||
The Visual Studio workspace is limited to VC6. Jack will not compile on most recent MSVC's. The fact is recent compilers (MSVC7, 8 or 9) don't agree with some of the Jack sources. | |||
But now you can compile Jack using GCC, with MingW. | |||
The project is actually organized in a Code::Blocks workspace. This is a simple and efficient way to compile the whole project. | |||
But for some reasons, you need to compile Jack using a SJLJ version of G++ (available on MingW website). | |||
Current GCC/G++ version (3.4.5) doesn't includes SJLJ so you'll have to use another one. | |||
Jack needs the use of SJLJ exceptions instead of DW2 because exceptions are exchanged between DLL's, and DW2 does not allow to throw an exception out of a DLL, so it wouldn't be cought. | |||
The ressources files has been created with ResEdit (ANSI build). VisualStudio uses 'ressource.rc' and 'ressource_vc.h'. The other files are used by MingW. | |||
You can make a small installer ('setup.exe') with CreateInstallFree, a little freeware. For this you have the little script 'jack.ci'.The installer contains everything jack needs to be intagreted in windows (including register entries and shortcuts). | |||
A binary version of qjackctl is also included. | |||
------------------------------- | |||
Running Jack on windows | |||
------------------------------- | |||
You can use two drivers : PortAudio and NetDriver. | |||
The PortAudio backend allow the use of many soundcards, using ASIO or WMME drivers (any ASIO driver can be seen by PortAudio). | |||
The NetDriver allow you to use NetJack2 on windows. Thus you can easily exchange midi and audio streams bitween computers (Linux, MacOSX or Windows). | |||
In both cases, you have to use the minimalist : | |||
'jackdmp -R -S -d ...' | |||
command. With PortAudio, you can have a list of supported drivers with : | |||
'jackdmp -R -S -d portaudio -l' | |||
Other options still stay the same. | |||
You can also pick a binary of Qjackctl, but this is still in development. | |||
More information at : 'http://www.grame.fr/~letz/jackdmp.html'. | |||
For any question or suggestion, you can refer to the mailing list 'jack-devel@jackaudio.org' | |||
Enjoy Jack on windows... ;-) |
@@ -0,0 +1,7 @@ | |||
[IO] | |||
input=4 | |||
output=4 | |||
[AUTO_CONNECT] | |||
input=1 | |||
output=1 |
@@ -0,0 +1,8 @@ | |||
This folder contains a script to create an installer for windows. | |||
It uses 'CreateInstaller Free', a little software allowing to make simple installers. | |||
You can use the 'jack.ci' script to make the installer. For that, you need to build the Code::Blocks workspace in order to have '.exe' and libraries. You also need 'qjackctl' binaries and libraries ('qjackctl.exe', 'mingwm10.dll', 'QtCore4.dll', 'QtGui.dll' and 'QtXml4.dll'). You can recompile qjackctl with qt4 or directly get the binaries. The five files are expected in the 'qjackctl' folder. | |||
Once all binaries available, just execute the script in 'CreateInstall' to make 'setup.exe'. | |||
The setup will copy all binaries to a specified folder, register the JackRouter (in order to have it in the ASIO drivers list) and create some shortcuts in the start menu. | |||
It's a good and proper way to get jack installed on windows. |
@@ -0,0 +1,126 @@ | |||
<*project | |||
version = 4 civer = "Free v4.14.3" winver = "2.6/5.1.2600" > | |||
<output> .</> | |||
<exename> Jack_v1.90_setup.exe</> | |||
<digitsign> </> | |||
<appname> Jack v1.90</> | |||
<password> </> | |||
<addlang> </> | |||
<icon> Default - 2</> | |||
<selfextr> 1</> | |||
<voltype> nolimit</> | |||
<volsize> </> | |||
<volpattern> disk%i.pak</> | |||
<load> </> | |||
<loadtime> 1000</> | |||
<checktype> admin</> | |||
<chkname> </> | |||
<chkmsg> </> | |||
<dlgfont> Verdana,8</> | |||
<lang> English</> | |||
<theme> Green</> | |||
<iface> leftlogo</> | |||
<leftlogo> .\src\logo_installer.bmp</> | |||
<logo> </> | |||
<vb> </> | |||
<dao> </> | |||
<background> 0</> | |||
<dlgwelcome> 1</> | |||
<dlgreadme> .\src\readme_installer.txt</> | |||
<dlglic> .\src\gpl_installer.rtf</> | |||
<dlgcustpath> </> | |||
<dlgenfpath> 0</> | |||
<dlgsavepath> 1</> | |||
<dlgautoprog> 1</> | |||
<dlgfinish> 1</> | |||
<comptype> ppmdmax</> | |||
<solid> 1</> | |||
<srcfolder> </> | |||
<ifexist> overnewer</> | |||
<runafter> </> | |||
<runconfirm> 0</> | |||
<uninclude> 1</> | |||
<unicon> Uninstall - 2</> | |||
<unshortcut> 1</> | |||
<unrun> </> | |||
<silent> 0</> | |||
<unfeed> </> | |||
<unautoclose> 1</> | |||
<unfinish> 1</> | |||
<bl> My Demo</> | |||
<blurl> </> | |||
<bghead> </> | |||
<bgfoot> </> | |||
<bgback> </> | |||
<files listview > | |||
<_><src>..\Release\bin\libjackmp.a</><dest>inst</><custom>\lib</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\libjackservermp.a</><dest>inst</><custom>\lib</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_connect.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_disconnect.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_load.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_lsp.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_metro.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jack_unload.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jackdmp.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\JackRouter.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\JackRouter.ini</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\libjackmp.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\libjackservermp.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\libsamplerate-0.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\portaudio_x86.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jackmp\jack_net.dll</><dest>inst</><custom>\jackmp</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jackmp\jack_portaudio.dll</><dest>inst</><custom>\jackmp</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jackmp\netmanager.dll</><dest>inst</><custom>\jackmp</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\Release\bin\jackmp\audioadapter.dll</><dest>inst</><custom>\jackmp</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\control.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\intclient.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\jack.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\jslist.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\midiport.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\ringbuffer.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\statistics.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\thread.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\transport.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>..\..\common\jack\types.h</><dest>inst</><custom>\includes\jack</><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\qjackctl\mingwm10.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\qjackctl\qjackctl.exe</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\qjackctl\QtCore4.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\qjackctl\QtGui4.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\qjackctl\QtXml4.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
<_><src>.\src\COPYING</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> | |||
</files> | |||
<runx listview > | |||
</runx> | |||
<registry listview > | |||
</registry> | |||
<shcut listview > | |||
<_><shpath>prog</><shname>Jack NetDriver</><tarpath>inst</><tarname>jackdmp.exe</><cmdline>-R -S -d net</><workpath>inst</><workcust></><icon></></> | |||
<_><shpath>prog</><shname>Jack Portaudio</><tarpath>inst</><tarname>jackdmp.exe</><cmdline>-R -S -d portaudio</><workpath>inst</><workcust></><icon></></> | |||
<_><shpath>prog</><shname>Jack Control</><tarpath>inst</><tarname>qjackctl.exe</><cmdline></><workpath>inst</><workcust></><icon>jackdmp.exe</></> | |||
<_><shpath>prog</><shname>Jack Command</><tarpath>sys</><tarname>cmd.exe</><cmdline></><workpath>inst</><workcust></><icon></></> | |||
</shcut> | |||
<ini listview > | |||
</ini> | |||
<copy listview > | |||
</copy> | |||
<activex listview > | |||
<_><path>inst</><name>JackRouter.dll</></> | |||
</activex> | |||
<font listview > | |||
</font> | |||
<ext listview > | |||
</ext> | |||
<mreg listview > | |||
</mreg> | |||
<macros> Pathadd=</> | |||
</project> |
@@ -0,0 +1,674 @@ | |||
GNU GENERAL PUBLIC LICENSE | |||
Version 3, 29 June 2007 | |||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | |||
Everyone is permitted to copy and distribute verbatim copies | |||
of this license document, but changing it is not allowed. | |||
Preamble | |||
The GNU General Public License is a free, copyleft license for | |||
software and other kinds of works. | |||
The licenses for most software and other practical works are designed | |||
to take away your freedom to share and change the works. By contrast, | |||
the GNU General Public License is intended to guarantee your freedom to | |||
share and change all versions of a program--to make sure it remains free | |||
software for all its users. We, the Free Software Foundation, use the | |||
GNU General Public License for most of our software; it applies also to | |||
any other work released this way by its authors. You can apply it to | |||
your programs, too. | |||
When we speak of free software, we are referring to freedom, not | |||
price. Our General Public Licenses are designed to make sure that you | |||
have the freedom to distribute copies of free software (and charge for | |||
them if you wish), that you receive source code or can get it if you | |||
want it, that you can change the software or use pieces of it in new | |||
free programs, and that you know you can do these things. | |||
To protect your rights, we need to prevent others from denying you | |||
these rights or asking you to surrender the rights. Therefore, you have | |||
certain responsibilities if you distribute copies of the software, or if | |||
you modify it: responsibilities to respect the freedom of others. | |||
For example, if you distribute copies of such a program, whether | |||
gratis or for a fee, you must pass on to the recipients the same | |||
freedoms that you received. You must make sure that they, too, receive | |||
or can get the source code. And you must show them these terms so they | |||
know their rights. | |||
Developers that use the GNU GPL protect your rights with two steps: | |||
(1) assert copyright on the software, and (2) offer you this License | |||
giving you legal permission to copy, distribute and/or modify it. | |||
For the developers' and authors' protection, the GPL clearly explains | |||
that there is no warranty for this free software. For both users' and | |||
authors' sake, the GPL requires that modified versions be marked as | |||
changed, so that their problems will not be attributed erroneously to | |||
authors of previous versions. | |||
Some devices are designed to deny users access to install or run | |||
modified versions of the software inside them, although the manufacturer | |||
can do so. This is fundamentally incompatible with the aim of | |||
protecting users' freedom to change the software. The systematic | |||
pattern of such abuse occurs in the area of products for individuals to | |||
use, which is precisely where it is most unacceptable. Therefore, we | |||
have designed this version of the GPL to prohibit the practice for those | |||
products. If such problems arise substantially in other domains, we | |||
stand ready to extend this provision to those domains in future versions | |||
of the GPL, as needed to protect the freedom of users. | |||
Finally, every program is threatened constantly by software patents. | |||
States should not allow patents to restrict development and use of | |||
software on general-purpose computers, but in those that do, we wish to | |||
avoid the special danger that patents applied to a free program could | |||
make it effectively proprietary. To prevent this, the GPL assures that | |||
patents cannot be used to render the program non-free. | |||
The precise terms and conditions for copying, distribution and | |||
modification follow. | |||
TERMS AND CONDITIONS | |||
0. Definitions. | |||
"This License" refers to version 3 of the GNU General Public License. | |||
"Copyright" also means copyright-like laws that apply to other kinds of | |||
works, such as semiconductor masks. | |||
"The Program" refers to any copyrightable work licensed under this | |||
License. Each licensee is addressed as "you". "Licensees" and | |||
"recipients" may be individuals or organizations. | |||
To "modify" a work means to copy from or adapt all or part of the work | |||
in a fashion requiring copyright permission, other than the making of an | |||
exact copy. The resulting work is called a "modified version" of the | |||
earlier work or a work "based on" the earlier work. | |||
A "covered work" means either the unmodified Program or a work based | |||
on the Program. | |||
To "propagate" a work means to do anything with it that, without | |||
permission, would make you directly or secondarily liable for | |||
infringement under applicable copyright law, except executing it on a | |||
computer or modifying a private copy. Propagation includes copying, | |||
distribution (with or without modification), making available to the | |||
public, and in some countries other activities as well. | |||
To "convey" a work means any kind of propagation that enables other | |||
parties to make or receive copies. Mere interaction with a user through | |||
a computer network, with no transfer of a copy, is not conveying. | |||
An interactive user interface displays "Appropriate Legal Notices" | |||
to the extent that it includes a convenient and prominently visible | |||
feature that (1) displays an appropriate copyright notice, and (2) | |||
tells the user that there is no warranty for the work (except to the | |||
extent that warranties are provided), that licensees may convey the | |||
work under this License, and how to view a copy of this License. If | |||
the interface presents a list of user commands or options, such as a | |||
menu, a prominent item in the list meets this criterion. | |||
1. Source Code. | |||
The "source code" for a work means the preferred form of the work | |||
for making modifications to it. "Object code" means any non-source | |||
form of a work. | |||
A "Standard Interface" means an interface that either is an official | |||
standard defined by a recognized standards body, or, in the case of | |||
interfaces specified for a particular programming language, one that | |||
is widely used among developers working in that language. | |||
The "System Libraries" of an executable work include anything, other | |||
than the work as a whole, that (a) is included in the normal form of | |||
packaging a Major Component, but which is not part of that Major | |||
Component, and (b) serves only to enable use of the work with that | |||
Major Component, or to implement a Standard Interface for which an | |||
implementation is available to the public in source code form. A | |||
"Major Component", in this context, means a major essential component | |||
(kernel, window system, and so on) of the specific operating system | |||
(if any) on which the executable work runs, or a compiler used to | |||
produce the work, or an object code interpreter used to run it. | |||
The "Corresponding Source" for a work in object code form means all | |||
the source code needed to generate, install, and (for an executable | |||
work) run the object code and to modify the work, including scripts to | |||
control those activities. However, it does not include the work's | |||
System Libraries, or general-purpose tools or generally available free | |||
programs which are used unmodified in performing those activities but | |||
which are not part of the work. For example, Corresponding Source | |||
includes interface definition files associated with source files for | |||
the work, and the source code for shared libraries and dynamically | |||
linked subprograms that the work is specifically designed to require, | |||
such as by intimate data communication or control flow between those | |||
subprograms and other parts of the work. | |||
The Corresponding Source need not include anything that users | |||
can regenerate automatically from other parts of the Corresponding | |||
Source. | |||
The Corresponding Source for a work in source code form is that | |||
same work. | |||
2. Basic Permissions. | |||
All rights granted under this License are granted for the term of | |||
copyright on the Program, and are irrevocable provided the stated | |||
conditions are met. This License explicitly affirms your unlimited | |||
permission to run the unmodified Program. The output from running a | |||
covered work is covered by this License only if the output, given its | |||
content, constitutes a covered work. This License acknowledges your | |||
rights of fair use or other equivalent, as provided by copyright law. | |||
You may make, run and propagate covered works that you do not | |||
convey, without conditions so long as your license otherwise remains | |||
in force. You may convey covered works to others for the sole purpose | |||
of having them make modifications exclusively for you, or provide you | |||
with facilities for running those works, provided that you comply with | |||
the terms of this License in conveying all material for which you do | |||
not control copyright. Those thus making or running the covered works | |||
for you must do so exclusively on your behalf, under your direction | |||
and control, on terms that prohibit them from making any copies of | |||
your copyrighted material outside their relationship with you. | |||
Conveying under any other circumstances is permitted solely under | |||
the conditions stated below. Sublicensing is not allowed; section 10 | |||
makes it unnecessary. | |||
3. Protecting Users' Legal Rights From Anti-Circumvention Law. | |||
No covered work shall be deemed part of an effective technological | |||
measure under any applicable law fulfilling obligations under article | |||
11 of the WIPO copyright treaty adopted on 20 December 1996, or | |||
similar laws prohibiting or restricting circumvention of such | |||
measures. | |||
When you convey a covered work, you waive any legal power to forbid | |||
circumvention of technological measures to the extent such circumvention | |||
is effected by exercising rights under this License with respect to | |||
the covered work, and you disclaim any intention to limit operation or | |||
modification of the work as a means of enforcing, against the work's | |||
users, your or third parties' legal rights to forbid circumvention of | |||
technological measures. | |||
4. Conveying Verbatim Copies. | |||
You may convey verbatim copies of the Program's source code as you | |||
receive it, in any medium, provided that you conspicuously and | |||
appropriately publish on each copy an appropriate copyright notice; | |||
keep intact all notices stating that this License and any | |||
non-permissive terms added in accord with section 7 apply to the code; | |||
keep intact all notices of the absence of any warranty; and give all | |||
recipients a copy of this License along with the Program. | |||
You may charge any price or no price for each copy that you convey, | |||
and you may offer support or warranty protection for a fee. | |||
5. Conveying Modified Source Versions. | |||
You may convey a work based on the Program, or the modifications to | |||
produce it from the Program, in the form of source code under the | |||
terms of section 4, provided that you also meet all of these conditions: | |||
a) The work must carry prominent notices stating that you modified | |||
it, and giving a relevant date. | |||
b) The work must carry prominent notices stating that it is | |||
released under this License and any conditions added under section | |||
7. This requirement modifies the requirement in section 4 to | |||
"keep intact all notices". | |||
c) You must license the entire work, as a whole, under this | |||
License to anyone who comes into possession of a copy. This | |||
License will therefore apply, along with any applicable section 7 | |||
additional terms, to the whole of the work, and all its parts, | |||
regardless of how they are packaged. This License gives no | |||
permission to license the work in any other way, but it does not | |||
invalidate such permission if you have separately received it. | |||
d) If the work has interactive user interfaces, each must display | |||
Appropriate Legal Notices; however, if the Program has interactive | |||
interfaces that do not display Appropriate Legal Notices, your | |||
work need not make them do so. | |||
A compilation of a covered work with other separate and independent | |||
works, which are not by their nature extensions of the covered work, | |||
and which are not combined with it such as to form a larger program, | |||
in or on a volume of a storage or distribution medium, is called an | |||
"aggregate" if the compilation and its resulting copyright are not | |||
used to limit the access or legal rights of the compilation's users | |||
beyond what the individual works permit. Inclusion of a covered work | |||
in an aggregate does not cause this License to apply to the other | |||
parts of the aggregate. | |||
6. Conveying Non-Source Forms. | |||
You may convey a covered work in object code form under the terms | |||
of sections 4 and 5, provided that you also convey the | |||
machine-readable Corresponding Source under the terms of this License, | |||
in one of these ways: | |||
a) Convey the object code in, or embodied in, a physical product | |||
(including a physical distribution medium), accompanied by the | |||
Corresponding Source fixed on a durable physical medium | |||
customarily used for software interchange. | |||
b) Convey the object code in, or embodied in, a physical product | |||
(including a physical distribution medium), accompanied by a | |||
written offer, valid for at least three years and valid for as | |||
long as you offer spare parts or customer support for that product | |||
model, to give anyone who possesses the object code either (1) a | |||
copy of the Corresponding Source for all the software in the | |||
product that is covered by this License, on a durable physical | |||
medium customarily used for software interchange, for a price no | |||
more than your reasonable cost of physically performing this | |||
conveying of source, or (2) access to copy the | |||
Corresponding Source from a network server at no charge. | |||
c) Convey individual copies of the object code with a copy of the | |||
written offer to provide the Corresponding Source. This | |||
alternative is allowed only occasionally and noncommercially, and | |||
only if you received the object code with such an offer, in accord | |||
with subsection 6b. | |||
d) Convey the object code by offering access from a designated | |||
place (gratis or for a charge), and offer equivalent access to the | |||
Corresponding Source in the same way through the same place at no | |||
further charge. You need not require recipients to copy the | |||
Corresponding Source along with the object code. If the place to | |||
copy the object code is a network server, the Corresponding Source | |||
may be on a different server (operated by you or a third party) | |||
that supports equivalent copying facilities, provided you maintain | |||
clear directions next to the object code saying where to find the | |||
Corresponding Source. Regardless of what server hosts the | |||
Corresponding Source, you remain obligated to ensure that it is | |||
available for as long as needed to satisfy these requirements. | |||
e) Convey the object code using peer-to-peer transmission, provided | |||
you inform other peers where the object code and Corresponding | |||
Source of the work are being offered to the general public at no | |||
charge under subsection 6d. | |||
A separable portion of the object code, whose source code is excluded | |||
from the Corresponding Source as a System Library, need not be | |||
included in conveying the object code work. | |||
A "User Product" is either (1) a "consumer product", which means any | |||
tangible personal property which is normally used for personal, family, | |||
or household purposes, or (2) anything designed or sold for incorporation | |||
into a dwelling. In determining whether a product is a consumer product, | |||
doubtful cases shall be resolved in favor of coverage. For a particular | |||
product received by a particular user, "normally used" refers to a | |||
typical or common use of that class of product, regardless of the status | |||
of the particular user or of the way in which the particular user | |||
actually uses, or expects or is expected to use, the product. A product | |||
is a consumer product regardless of whether the product has substantial | |||
commercial, industrial or non-consumer uses, unless such uses represent | |||
the only significant mode of use of the product. | |||
"Installation Information" for a User Product means any methods, | |||
procedures, authorization keys, or other information required to install | |||
and execute modified versions of a covered work in that User Product from | |||
a modified version of its Corresponding Source. The information must | |||
suffice to ensure that the continued functioning of the modified object | |||
code is in no case prevented or interfered with solely because | |||
modification has been made. | |||
If you convey an object code work under this section in, or with, or | |||
specifically for use in, a User Product, and the conveying occurs as | |||
part of a transaction in which the right of possession and use of the | |||
User Product is transferred to the recipient in perpetuity or for a | |||
fixed term (regardless of how the transaction is characterized), the | |||
Corresponding Source conveyed under this section must be accompanied | |||
by the Installation Information. But this requirement does not apply | |||
if neither you nor any third party retains the ability to install | |||
modified object code on the User Product (for example, the work has | |||
been installed in ROM). | |||
The requirement to provide Installation Information does not include a | |||
requirement to continue to provide support service, warranty, or updates | |||
for a work that has been modified or installed by the recipient, or for | |||
the User Product in which it has been modified or installed. Access to a | |||
network may be denied when the modification itself materially and | |||
adversely affects the operation of the network or violates the rules and | |||
protocols for communication across the network. | |||
Corresponding Source conveyed, and Installation Information provided, | |||
in accord with this section must be in a format that is publicly | |||
documented (and with an implementation available to the public in | |||
source code form), and must require no special password or key for | |||
unpacking, reading or copying. | |||
7. Additional Terms. | |||
"Additional permissions" are terms that supplement the terms of this | |||
License by making exceptions from one or more of its conditions. | |||
Additional permissions that are applicable to the entire Program shall | |||
be treated as though they were included in this License, to the extent | |||
that they are valid under applicable law. If additional permissions | |||
apply only to part of the Program, that part may be used separately | |||
under those permissions, but the entire Program remains governed by | |||
this License without regard to the additional permissions. | |||
When you convey a copy of a covered work, you may at your option | |||
remove any additional permissions from that copy, or from any part of | |||
it. (Additional permissions may be written to require their own | |||
removal in certain cases when you modify the work.) You may place | |||
additional permissions on material, added by you to a covered work, | |||
for which you have or can give appropriate copyright permission. | |||
Notwithstanding any other provision of this License, for material you | |||
add to a covered work, you may (if authorized by the copyright holders of | |||
that material) supplement the terms of this License with terms: | |||
a) Disclaiming warranty or limiting liability differently from the | |||
terms of sections 15 and 16 of this License; or | |||
b) Requiring preservation of specified reasonable legal notices or | |||
author attributions in that material or in the Appropriate Legal | |||
Notices displayed by works containing it; or | |||
c) Prohibiting misrepresentation of the origin of that material, or | |||
requiring that modified versions of such material be marked in | |||
reasonable ways as different from the original version; or | |||
d) Limiting the use for publicity purposes of names of licensors or | |||
authors of the material; or | |||
e) Declining to grant rights under trademark law for use of some | |||
trade names, trademarks, or service marks; or | |||
f) Requiring indemnification of licensors and authors of that | |||
material by anyone who conveys the material (or modified versions of | |||
it) with contractual assumptions of liability to the recipient, for | |||
any liability that these contractual assumptions directly impose on | |||
those licensors and authors. | |||
All other non-permissive additional terms are considered "further | |||
restrictions" within the meaning of section 10. If the Program as you | |||
received it, or any part of it, contains a notice stating that it is | |||
governed by this License along with a term that is a further | |||
restriction, you may remove that term. If a license document contains | |||
a further restriction but permits relicensing or conveying under this | |||
License, you may add to a covered work material governed by the terms | |||
of that license document, provided that the further restriction does | |||
not survive such relicensing or conveying. | |||
If you add terms to a covered work in accord with this section, you | |||
must place, in the relevant source files, a statement of the | |||
additional terms that apply to those files, or a notice indicating | |||
where to find the applicable terms. | |||
Additional terms, permissive or non-permissive, may be stated in the | |||
form of a separately written license, or stated as exceptions; | |||
the above requirements apply either way. | |||
8. Termination. | |||
You may not propagate or modify a covered work except as expressly | |||
provided under this License. Any attempt otherwise to propagate or | |||
modify it is void, and will automatically terminate your rights under | |||
this License (including any patent licenses granted under the third | |||
paragraph of section 11). | |||
However, if you cease all violation of this License, then your | |||
license from a particular copyright holder is reinstated (a) | |||
provisionally, unless and until the copyright holder explicitly and | |||
finally terminates your license, and (b) permanently, if the copyright | |||
holder fails to notify you of the violation by some reasonable means | |||
prior to 60 days after the cessation. | |||
Moreover, your license from a particular copyright holder is | |||
reinstated permanently if the copyright holder notifies you of the | |||
violation by some reasonable means, this is the first time you have | |||
received notice of violation of this License (for any work) from that | |||
copyright holder, and you cure the violation prior to 30 days after | |||
your receipt of the notice. | |||
Termination of your rights under this section does not terminate the | |||
licenses of parties who have received copies or rights from you under | |||
this License. If your rights have been terminated and not permanently | |||
reinstated, you do not qualify to receive new licenses for the same | |||
material under section 10. | |||
9. Acceptance Not Required for Having Copies. | |||
You are not required to accept this License in order to receive or | |||
run a copy of the Program. Ancillary propagation of a covered work | |||
occurring solely as a consequence of using peer-to-peer transmission | |||
to receive a copy likewise does not require acceptance. However, | |||
nothing other than this License grants you permission to propagate or | |||
modify any covered work. These actions infringe copyright if you do | |||
not accept this License. Therefore, by modifying or propagating a | |||
covered work, you indicate your acceptance of this License to do so. | |||
10. Automatic Licensing of Downstream Recipients. | |||
Each time you convey a covered work, the recipient automatically | |||
receives a license from the original licensors, to run, modify and | |||
propagate that work, subject to this License. You are not responsible | |||
for enforcing compliance by third parties with this License. | |||
An "entity transaction" is a transaction transferring control of an | |||
organization, or substantially all assets of one, or subdividing an | |||
organization, or merging organizations. If propagation of a covered | |||
work results from an entity transaction, each party to that | |||
transaction who receives a copy of the work also receives whatever | |||
licenses to the work the party's predecessor in interest had or could | |||
give under the previous paragraph, plus a right to possession of the | |||
Corresponding Source of the work from the predecessor in interest, if | |||
the predecessor has it or can get it with reasonable efforts. | |||
You may not impose any further restrictions on the exercise of the | |||
rights granted or affirmed under this License. For example, you may | |||
not impose a license fee, royalty, or other charge for exercise of | |||
rights granted under this License, and you may not initiate litigation | |||
(including a cross-claim or counterclaim in a lawsuit) alleging that | |||
any patent claim is infringed by making, using, selling, offering for | |||
sale, or importing the Program or any portion of it. | |||
11. Patents. | |||
A "contributor" is a copyright holder who authorizes use under this | |||
License of the Program or a work on which the Program is based. The | |||
work thus licensed is called the contributor's "contributor version". | |||
A contributor's "essential patent claims" are all patent claims | |||
owned or controlled by the contributor, whether already acquired or | |||
hereafter acquired, that would be infringed by some manner, permitted | |||
by this License, of making, using, or selling its contributor version, | |||
but do not include claims that would be infringed only as a | |||
consequence of further modification of the contributor version. For | |||
purposes of this definition, "control" includes the right to grant | |||
patent sublicenses in a manner consistent with the requirements of | |||
this License. | |||
Each contributor grants you a non-exclusive, worldwide, royalty-free | |||
patent license under the contributor's essential patent claims, to | |||
make, use, sell, offer for sale, import and otherwise run, modify and | |||
propagate the contents of its contributor version. | |||
In the following three paragraphs, a "patent license" is any express | |||
agreement or commitment, however denominated, not to enforce a patent | |||
(such as an express permission to practice a patent or covenant not to | |||
sue for patent infringement). To "grant" such a patent license to a | |||
party means to make such an agreement or commitment not to enforce a | |||
patent against the party. | |||
If you convey a covered work, knowingly relying on a patent license, | |||
and the Corresponding Source of the work is not available for anyone | |||
to copy, free of charge and under the terms of this License, through a | |||
publicly available network server or other readily accessible means, | |||
then you must either (1) cause the Corresponding Source to be so | |||
available, or (2) arrange to deprive yourself of the benefit of the | |||
patent license for this particular work, or (3) arrange, in a manner | |||
consistent with the requirements of this License, to extend the patent | |||
license to downstream recipients. "Knowingly relying" means you have | |||
actual knowledge that, but for the patent license, your conveying the | |||
covered work in a country, or your recipient's use of the covered work | |||
in a country, would infringe one or more identifiable patents in that | |||
country that you have reason to believe are valid. | |||
If, pursuant to or in connection with a single transaction or | |||
arrangement, you convey, or propagate by procuring conveyance of, a | |||
covered work, and grant a patent license to some of the parties | |||
receiving the covered work authorizing them to use, propagate, modify | |||
or convey a specific copy of the covered work, then the patent license | |||
you grant is automatically extended to all recipients of the covered | |||
work and works based on it. | |||
A patent license is "discriminatory" if it does not include within | |||
the scope of its coverage, prohibits the exercise of, or is | |||
conditioned on the non-exercise of one or more of the rights that are | |||
specifically granted under this License. You may not convey a covered | |||
work if you are a party to an arrangement with a third party that is | |||
in the business of distributing software, under which you make payment | |||
to the third party based on the extent of your activity of conveying | |||
the work, and under which the third party grants, to any of the | |||
parties who would receive the covered work from you, a discriminatory | |||
patent license (a) in connection with copies of the covered work | |||
conveyed by you (or copies made from those copies), or (b) primarily | |||
for and in connection with specific products or compilations that | |||
contain the covered work, unless you entered into that arrangement, | |||
or that patent license was granted, prior to 28 March 2007. | |||
Nothing in this License shall be construed as excluding or limiting | |||
any implied license or other defenses to infringement that may | |||
otherwise be available to you under applicable patent law. | |||
12. No Surrender of Others' Freedom. | |||
If conditions are imposed on you (whether by court order, agreement or | |||
otherwise) that contradict the conditions of this License, they do not | |||
excuse you from the conditions of this License. If you cannot convey a | |||
covered work so as to satisfy simultaneously your obligations under this | |||
License and any other pertinent obligations, then as a consequence you may | |||
not convey it at all. For example, if you agree to terms that obligate you | |||
to collect a royalty for further conveying from those to whom you convey | |||
the Program, the only way you could satisfy both those terms and this | |||
License would be to refrain entirely from conveying the Program. | |||
13. Use with the GNU Affero General Public License. | |||
Notwithstanding any other provision of this License, you have | |||
permission to link or combine any covered work with a work licensed | |||
under version 3 of the GNU Affero General Public License into a single | |||
combined work, and to convey the resulting work. The terms of this | |||
License will continue to apply to the part which is the covered work, | |||
but the special requirements of the GNU Affero General Public License, | |||
section 13, concerning interaction through a network will apply to the | |||
combination as such. | |||
14. Revised Versions of this License. | |||
The Free Software Foundation may publish revised and/or new versions of | |||
the GNU General Public License from time to time. Such new versions will | |||
be similar in spirit to the present version, but may differ in detail to | |||
address new problems or concerns. | |||
Each version is given a distinguishing version number. If the | |||
Program specifies that a certain numbered version of the GNU General | |||
Public License "or any later version" applies to it, you have the | |||
option of following the terms and conditions either of that numbered | |||
version or of any later version published by the Free Software | |||
Foundation. If the Program does not specify a version number of the | |||
GNU General Public License, you may choose any version ever published | |||
by the Free Software Foundation. | |||
If the Program specifies that a proxy can decide which future | |||
versions of the GNU General Public License can be used, that proxy's | |||
public statement of acceptance of a version permanently authorizes you | |||
to choose that version for the Program. | |||
Later license versions may give you additional or different | |||
permissions. However, no additional obligations are imposed on any | |||
author or copyright holder as a result of your choosing to follow a | |||
later version. | |||
15. Disclaimer of Warranty. | |||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | |||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | |||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | |||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | |||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | |||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | |||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | |||
16. Limitation of Liability. | |||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | |||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | |||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | |||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | |||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | |||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | |||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | |||
SUCH DAMAGES. | |||
17. Interpretation of Sections 15 and 16. | |||
If the disclaimer of warranty and limitation of liability provided | |||
above cannot be given local legal effect according to their terms, | |||
reviewing courts shall apply local law that most closely approximates | |||
an absolute waiver of all civil liability in connection with the | |||
Program, unless a warranty or assumption of liability accompanies a | |||
copy of the Program in return for a fee. | |||
END OF TERMS AND CONDITIONS | |||
How to Apply These Terms to Your New Programs | |||
If you develop a new program, and you want it to be of the greatest | |||
possible use to the public, the best way to achieve this is to make it | |||
free software which everyone can redistribute and change under these terms. | |||
To do so, attach the following notices to the program. It is safest | |||
to attach them to the start of each source file to most effectively | |||
state the exclusion of warranty; and each file should have at least | |||
the "copyright" line and a pointer to where the full notice is found. | |||
<one line to give the program's name and a brief idea of what it does.> | |||
Copyright (C) <year> <name of author> | |||
This program is free software: you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation, either version 3 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
Also add information on how to contact you by electronic and paper mail. | |||
If the program does terminal interaction, make it output a short | |||
notice like this when it starts in an interactive mode: | |||
<program> Copyright (C) <year> <name of author> | |||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | |||
This is free software, and you are welcome to redistribute it | |||
under certain conditions; type `show c' for details. | |||
The hypothetical commands `show w' and `show c' should show the appropriate | |||
parts of the General Public License. Of course, your program's commands | |||
might be different; for a GUI interface, you would use an "about box". | |||
You should also get your employer (if you work as a programmer) or school, | |||
if any, to sign a "copyright disclaimer" for the program, if necessary. | |||
For more information on this, and how to apply and follow the GNU GPL, see | |||
<http://www.gnu.org/licenses/>. | |||
The GNU General Public License does not permit incorporating your program | |||
into proprietary programs. If your program is a subroutine library, you | |||
may consider it more useful to permit linking proprietary applications with | |||
the library. If this is what you want to do, use the GNU Lesser General | |||
Public License instead of this License. But first, please read | |||
<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
@@ -0,0 +1,13 @@ | |||
To launch Jack with default drivers, start 'Jack Portaudio' or 'Jack NetDriver'. | |||
Once Jack Server Started, you can launch QJackctl with the 'Jack Control' shortcut. | |||
'Jack Command' starts a terminal from your installation folder. You can get a list of available Portaudio drivers with : | |||
'jackdmp -d portaudio -l' | |||
And then just launch : | |||
'jackdmp -R -S -d portaudio -d "your driver's name" | |||
More options with 'jackdmp'. | |||
To use the Jack Router, just select the 'JackRouter' asio driver in your audio software. |
@@ -66,7 +66,7 @@ | |||
int | |||
getopt_long (argc, argv, options, long_options, opt_index) | |||
int argc; | |||
char *const *argv; | |||
char **argv; | |||
const char *options; | |||
const struct option *long_options; | |||
int *opt_index; | |||
@@ -0,0 +1,98 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_audioadapter" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jackmp\audioadapter" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DBUILD_DLL" /> | |||
<Add option="-D__SMP__" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="portaudio_x86" /> | |||
<Add library="libsamplerate-0" /> | |||
<Add library="libjackservermp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jackmp\netioadapter" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createDefFile="1" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add option="-DBUILD_DLL" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="user32" /> | |||
<Add library="kernel32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="portaudio_x86" /> | |||
<Add library="libsamplerate" /> | |||
<Add library="libjackservermp" /> | |||
<Add library="libsamplerate-0" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Unit filename="..\common\JackAudioAdapter.cpp" /> | |||
<Unit filename="..\common\JackAudioAdapterInterface.cpp" /> | |||
<Unit filename="..\common\JackCallbackAudioAdapter.cpp" /> | |||
<Unit filename="..\common\JackLibSampleRateResampler.cpp" /> | |||
<Unit filename="..\common\JackResampler.cpp" /> | |||
<Unit filename="JackPortAudioAdapter.cpp" /> | |||
<Unit filename="jackaudioadapter.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Extensions> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -0,0 +1,90 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_connect" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_connect" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\example-clients" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_connect" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\example-clients" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\connect.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt1.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
<envvars /> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "../common/" /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_connect - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_connect.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -105,9 +106,5 @@ SOURCE=.\getopt1.c | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,91 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_disconnect" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_disconnect" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\example-clients" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_disconnect" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\example-clients" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\connect.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt1.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<debugger /> | |||
<envvars /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_freeverb.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_freeverb - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_freeverb.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -97,9 +98,5 @@ SOURCE="..\example-clients\freeverb.cpp" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,86 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_load" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_load" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_load" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-g" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\ipload.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -0,0 +1,110 @@ | |||
# Microsoft Developer Studio Project File - Name="jack_load" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Console Application" 0x0103 | |||
CFG=jack_load - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_load.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_load.mak" CFG="jack_load - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "jack_load - Win32 Release" (based on "Win32 (x86) Console Application") | |||
!MESSAGE "jack_load - Win32 Debug" (based on "Win32 (x86) Console Application") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "jack_load - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "jack_load___Win32_Release" | |||
# PROP BASE Intermediate_Dir "jack_load___Win32_Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /I "../common/jack" /I "../example-clients" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c | |||
# ADD BASE RSC /l 0x40c /d "NDEBUG" | |||
# ADD RSC /l 0x40c /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_load.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_load - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "jack_load___Win32_Debug" | |||
# PROP BASE Intermediate_Dir "jack_load___Win32_Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../common" /I "../common/jack" /I "../example-clients" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
# ADD BASE RSC /l 0x40c /d "_DEBUG" | |||
# ADD RSC /l 0x40c /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_load.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
# Begin Target | |||
# Name "jack_load - Win32 Release" | |||
# Name "jack_load - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=.\getopt.c | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\getopt1.c | |||
# End Source File | |||
# Begin Source File | |||
SOURCE="..\example-clients\ipload.c" | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# End Target | |||
# End Project |
@@ -0,0 +1,77 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_lsp" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_lsp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_lsp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-g" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\lsp.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_lsp.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_lsp - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_lsp.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -105,31 +106,5 @@ SOURCE="..\example-clients\lsp.c" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
!IF "$(CFG)" == "jack_lsp - Win32 Release" | |||
!ELSEIF "$(CFG)" == "jack_lsp - Win32 Debug" | |||
# PROP Exclude_From_Build 1 | |||
!ENDIF | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Debug\libjackmp_debug.lib | |||
!IF "$(CFG)" == "jack_lsp - Win32 Release" | |||
# PROP Exclude_From_Build 1 | |||
!ELSEIF "$(CFG)" == "jack_lsp - Win32 Debug" | |||
!ENDIF | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,83 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_metro" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_metro" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_metro" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add directory="..\example-clients" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\metro.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<lib_finder disable_auto="1" /> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_metro.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_metro - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_metro.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -105,31 +106,5 @@ SOURCE="..\example-clients\metro.c" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
!IF "$(CFG)" == "jack_metro - Win32 Release" | |||
!ELSEIF "$(CFG)" == "jack_metro - Win32 Debug" | |||
# PROP Exclude_From_Build 1 | |||
!ENDIF | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Debug\libjackmp_debug.lib | |||
!IF "$(CFG)" == "jack_metro - Win32 Release" | |||
# PROP Exclude_From_Build 1 | |||
!ELSEIF "$(CFG)" == "jack_metro - Win32 Debug" | |||
!ENDIF | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,93 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_netdriver" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jackmp\jack_net" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DBUILD_DLL" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add library="ws2_32" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jackmp\jack_netdriver" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createDefFile="1" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add option="-DBUILD_DLL" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="user32" /> | |||
<Add library="kernel32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add library="ws2_32" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\common\JackNetDriver.cpp" /> | |||
<Unit filename="jacknetdriver.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<lib_finder disable_auto="1" /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -0,0 +1,107 @@ | |||
# Microsoft Developer Studio Project File - Name="jack_netdriver" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 | |||
CFG=jack_netdriver - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_netdriver.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_netdriver.mak" CFG="jack_netdriver - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "jack_netdriver - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE "jack_netdriver - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
MTL=midl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "jack_netdriver - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "jack_netdriver___Win32_Release" | |||
# PROP BASE Intermediate_Dir "jack_netdriver___Win32_Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETDRIVER_EXPORTS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETDRIVER_EXPORTS" /YX /FD /c | |||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x40c /d "NDEBUG" | |||
# ADD RSC /l 0x40c /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackservermp.lib ws2_32.lib /nologo /dll /machine:I386 /out:"./Release/bin/jackmp/jack_netdriver.dll" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_netdriver - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "jack_netdriver___Win32_Debug" | |||
# PROP BASE Intermediate_Dir "jack_netdriver___Win32_Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETDRIVER_EXPORTS" /YX /FD /GZ /c | |||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETDRIVER_EXPORTS" /YX /FD /GZ /c | |||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x40c /d "_DEBUG" | |||
# ADD RSC /l 0x40c /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackservermp.lib ws2_32.lib /nologo /dll /debug /machine:I386 /out:"./Debug/bin/jackmp/jack_netdriver.dll" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
# Begin Target | |||
# Name "jack_netdriver - Win32 Release" | |||
# Name "jack_netdriver - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=..\common\JackNetDriver.cpp | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# End Target | |||
# End Project |
@@ -0,0 +1,90 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_netmanager" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jackmp\netmanager" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="ws2_32" /> | |||
<Add library="libjackservermp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jackmp\netmanager" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createDefFile="1" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="ws2_32" /> | |||
<Add library="libjackservermp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\common\JackNetManager.cpp" /> | |||
<Unit filename="jacknetmanager.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -0,0 +1,107 @@ | |||
# Microsoft Developer Studio Project File - Name="jack_netmanager" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 | |||
CFG=jack_netmanager - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_netmanager.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_netmanager.mak" CFG="jack_netmanager - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "jack_netmanager - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE "jack_netmanager - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
MTL=midl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "jack_netmanager - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "jack_netmanager___Win32_Release" | |||
# PROP BASE Intermediate_Dir "jack_netmanager___Win32_Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETMANAGER_EXPORTS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETMANAGER_EXPORTS" /YX /FD /c | |||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x40c /d "NDEBUG" | |||
# ADD RSC /l 0x40c /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackservermp.lib ws2_32.lib /nologo /dll /machine:I386 /out:"./Release/bin/jackmp/netmanager.dll" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_netmanager - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "jack_netmanager___Win32_Debug" | |||
# PROP BASE Intermediate_Dir "jack_netmanager___Win32_Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "./Deubg" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETMANAGER_EXPORTS" /YX /FD /GZ /c | |||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_NETMANAGER_EXPORTS" /YX /FD /GZ /c | |||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x40c /d "_DEBUG" | |||
# ADD RSC /l 0x40c /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackservermp.lib ws2_32.lib /nologo /dll /debug /machine:I386 /out:"./Debug/bin/jackmp/netmanager.dll" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
# Begin Target | |||
# Name "jack_netmanager - Win32 Release" | |||
# Name "jack_netmanager - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=..\common\JackNetManager.cpp | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# End Target | |||
# End Project |
@@ -0,0 +1,104 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_portaudio" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jackmp\jack_portaudio" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-DNDEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DJACK_PORTAUDIO_EXPORTS" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add library="portaudio_x86" /> | |||
<Add directory="Release\bin" /> | |||
<Add directory="..\windows" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jackmp\jack_portaudio_debug" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-W" /> | |||
<Add option="-g" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-D_DEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DJACK_PORTAUDIO_EXPORTS" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add library="portaudio_x86" /> | |||
<Add directory="Debug\bin" /> | |||
<Add directory="..\windows" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="JackPortAudioDevices.cpp" /> | |||
<Unit filename="JackPortAudioDriver.cpp" /> | |||
<Unit filename="jackportaudio.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<lib_finder disable_auto="1" /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -38,9 +38,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_PORTAUDIO_EXPORTS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_PORTAUDIO_EXPORTS" /YX /FD /c | |||
@@ -53,7 +53,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib portaudio_x86.lib libjackservermp.lib /nologo /dll /machine:I386 /out:"./Release/bin/jackmp/jack_portaudio.dll" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_portaudio - Win32 Debug" | |||
@@ -64,9 +64,9 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 1 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_PORTAUDIO_EXPORTS" /YX /FD /GZ /c | |||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JACK_PORTAUDIO_EXPORTS" /FR /YX /FD /GZ /c | |||
@@ -79,7 +79,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug/jack_portaudio_debug.dll" /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib portaudio_x86.lib libjackservermp.lib /nologo /dll /debug /machine:I386 /out:"./Debug/bin/jackmp/jack_portaudio_debug.dll" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -107,35 +107,5 @@ SOURCE=.\resource.rc | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\portaudio.lib | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Debug\libjackservermp_debug.lib | |||
!IF "$(CFG)" == "jack_portaudio - Win32 Release" | |||
# PROP Exclude_From_Build 1 | |||
!ELSEIF "$(CFG)" == "jack_portaudio - Win32 Debug" | |||
!ENDIF | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Release\libjackservermp.lib | |||
!IF "$(CFG)" == "jack_portaudio - Win32 Release" | |||
!ELSEIF "$(CFG)" == "jack_portaudio - Win32 Debug" | |||
# PROP Exclude_From_Build 1 | |||
!ENDIF | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_simple_client.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_simple_client - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_simple_client.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -97,31 +98,5 @@ SOURCE="..\example-clients\simple_client.c" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
!IF "$(CFG)" == "jack_simple_client - Win32 Release" | |||
!ELSEIF "$(CFG)" == "jack_simple_client - Win32 Debug" | |||
# PROP Exclude_From_Build 1 | |||
!ENDIF | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Debug\libjackmp_debug.lib | |||
!IF "$(CFG)" == "jack_simple_client - Win32 Release" | |||
# PROP Exclude_From_Build 1 | |||
!ELSEIF "$(CFG)" == "jack_simple_client - Win32 Debug" | |||
!ENDIF | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common/" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__STDC__" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_test.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_test - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_test.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -105,9 +106,5 @@ SOURCE=..\tests\jack_test.cpp | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,86 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jack_unload" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jack_unload" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jack_unload" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug\" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\windows" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackmp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\example-clients\ipunload.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<lib_finder disable_auto="1" /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -0,0 +1,102 @@ | |||
# Microsoft Developer Studio Project File - Name="jack_unload" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Console Application" 0x0103 | |||
CFG=jack_unload - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_unload.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "jack_unload.mak" CFG="jack_unload - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "jack_unload - Win32 Release" (based on "Win32 (x86) Console Application") | |||
!MESSAGE "jack_unload - Win32 Debug" (based on "Win32 (x86) Console Application") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "jack_unload - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "jack_unload___Win32_Release" | |||
# PROP BASE Intermediate_Dir "jack_unload___Win32_Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /I "../common/jack" /I "../example-clients" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD BASE RSC /l 0x40c /d "NDEBUG" | |||
# ADD RSC /l 0x40c /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jack_unload.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jack_unload - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "jack_unload___Win32_Debug" | |||
# PROP BASE Intermediate_Dir "jack_unload___Win32_Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "../common" /I "../common/jack" /I "../example-clients" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
# ADD BASE RSC /l 0x40c /d "_DEBUG" | |||
# ADD RSC /l 0x40c /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jack_unload.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
# Begin Target | |||
# Name "jack_unload - Win32 Release" | |||
# Name "jack_unload - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE="..\example-clients\ipunload.c" | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# End Target | |||
# End Project |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp Audio Adapter for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "audioadapter\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "audioadapter.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "audioadapter\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -0,0 +1,104 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="jackdmp" /> | |||
<Option pch_mode="2" /> | |||
<Option default_target="Win32 Debug" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\jackdmp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Option parameters="-R -S -d net" /> | |||
<Option host_application="jackdmp.exe" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-DNDEBUG" /> | |||
<Add option="-D_CONSOLE" /> | |||
<Add option="-D_MBCS" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\jackdmp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug" /> | |||
<Option type="1" /> | |||
<Option compiler="gcc" /> | |||
<Option parameters="-R -S -d net" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-D_DEBUG" /> | |||
<Add option="-D_CONSOLE" /> | |||
<Add option="-D_MBCS" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="libjackservermp" /> | |||
<Add directory="Debug\bin" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\common\Jackdmp.cpp" /> | |||
<Unit filename="getopt.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt1.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="jackdmp.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -37,8 +37,8 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -50,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackservermp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jackdmp.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jackdmp - Win32 Debug" | |||
@@ -61,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -74,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jackdmp.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -106,31 +106,5 @@ SOURCE=..\common\Jackdmp.cpp | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackservermp.lib | |||
!IF "$(CFG)" == "jackdmp - Win32 Release" | |||
!ELSEIF "$(CFG)" == "jackdmp - Win32 Debug" | |||
# PROP Exclude_From_Build 1 | |||
!ENDIF | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Debug\libjackservermp_debug.lib | |||
!IF "$(CFG)" == "jackdmp - Win32 Release" | |||
# PROP Exclude_From_Build 1 | |||
!ELSEIF "$(CFG)" == "jackdmp - Win32 Debug" | |||
!ENDIF | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -11,6 +11,9 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -23,6 +26,24 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
Project: "jack_load"=".\jack_load.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -35,6 +56,9 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -47,6 +71,39 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
Project: "jack_netdriver"=".\jack_netdriver.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackservermp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
Project: "jack_netmanager"=".\jack_netmanager.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackservermp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -59,6 +116,9 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackservermp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -71,6 +131,9 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -83,6 +146,24 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
Project: "jack_unload"=".\jack_unload.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -95,11 +176,14 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackservermp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
Project: "jdelay"="..\..\..\..\Jackdmp\src_win32\windows\jdelay.dsp" - Package Owner=<4> | |||
Project: "jdelay"=".\jdelay.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
@@ -107,6 +191,9 @@ Package=<5> | |||
Package=<4> | |||
{{{ | |||
Begin Project Dependency | |||
Project_Dep_Name libjackmp | |||
End Project Dependency | |||
}}} | |||
############################################################################### | |||
@@ -0,0 +1,48 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_APP | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp server for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "jackdmp\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "jackdmp.exe\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "jackdmp\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END | |||
// | |||
// Icon resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
IDI_ICON1 ICON ".\\Setup\\src\\jack.ico" |
@@ -0,0 +1,38 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_workspace_file> | |||
<Workspace title="jackdmp workspace"> | |||
<Project filename="libjackservermp.cbp" /> | |||
<Project filename="libjackmp.cbp" /> | |||
<Project filename="jackdmp.cbp"> | |||
<Depends filename="libjackservermp.cbp" /> | |||
</Project> | |||
<Project filename="jack_audioadapter.cbp" active="1"> | |||
<Depends filename="libjackservermp.cbp" /> | |||
</Project> | |||
<Project filename="jack_portaudio.cbp"> | |||
<Depends filename="libjackservermp.cbp" /> | |||
</Project> | |||
<Project filename="jack_netdriver.cbp"> | |||
<Depends filename="libjackservermp.cbp" /> | |||
</Project> | |||
<Project filename="jack_netmanager.cbp"> | |||
<Depends filename="libjackservermp.cbp" /> | |||
</Project> | |||
<Project filename="jack_load.cbp"> | |||
<Depends filename="libjackmp.cbp" /> | |||
</Project> | |||
<Project filename="jack_unload.cbp"> | |||
<Depends filename="libjackmp.cbp" /> | |||
</Project> | |||
<Project filename="jack_lsp.cbp"> | |||
<Depends filename="libjackmp.cbp" /> | |||
</Project> | |||
<Project filename="jack_metro.cbp"> | |||
<Depends filename="libjackmp.cbp" /> | |||
</Project> | |||
<Project filename="jack_connect.cbp" /> | |||
<Project filename="jack_disconnect.cbp"> | |||
<Depends filename="libjackmp.cbp" /> | |||
</Project> | |||
</Workspace> | |||
</CodeBlocks_workspace_file> |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp Net Driver for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "jack_netdriver\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "jack_netdriver.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "jack_netdriver\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp Net Manager for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "netmanager\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "netmanager.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "netmanager\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp PortAudio Driver for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "jack_portaudio\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "jack_portaudio.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "jack_portaudio\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "../common" /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjackmp.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/jdelay.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "jdelay - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/jdelay.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -97,9 +98,5 @@ SOURCE=..\tests\jdelay.cpp | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\Release\libjackmp.lib | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,136 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="libjackmp" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\libjackmp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-DNDEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DLIBJACKMP_EXPORTS" /> | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\libjackmp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createDefFile="1" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-D_DEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DLIBJACKMP_EXPORTS" /> | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
</Compiler> | |||
<Unit filename="..\common\JackAPI.cpp" /> | |||
<Unit filename="..\common\JackActivationCount.cpp" /> | |||
<Unit filename="..\common\JackAudioPort.cpp" /> | |||
<Unit filename="..\common\JackClient.cpp" /> | |||
<Unit filename="..\common\JackConnectionManager.cpp" /> | |||
<Unit filename="..\common\JackEngineControl.cpp" /> | |||
<Unit filename="..\common\JackError.cpp" /> | |||
<Unit filename="..\common\JackFrameTimer.cpp" /> | |||
<Unit filename="..\common\JackGlobals.cpp" /> | |||
<Unit filename="..\common\JackGraphManager.cpp" /> | |||
<Unit filename="..\common\JackLibAPI.cpp" /> | |||
<Unit filename="..\common\JackLibClient.cpp" /> | |||
<Unit filename="..\common\JackMessageBuffer.cpp" /> | |||
<Unit filename="..\common\JackMidiAPI.cpp" /> | |||
<Unit filename="..\common\JackMidiPort.cpp" /> | |||
<Unit filename="..\common\JackPort.cpp" /> | |||
<Unit filename="..\common\JackPortType.cpp" /> | |||
<Unit filename="..\common\JackShmMem.cpp" /> | |||
<Unit filename="..\common\JackTime.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="..\common\JackTools.cpp" /> | |||
<Unit filename="..\common\JackTransportEngine.cpp" /> | |||
<Unit filename="..\common\shm.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="JackWinNamedPipe.cpp" /> | |||
<Unit filename="JackWinNamedPipeClientChannel.cpp" /> | |||
<Unit filename="JackWinProcessSync.cpp" /> | |||
<Unit filename="JackWinSemaphore.cpp" /> | |||
<Unit filename="JackWinThread.cpp" /> | |||
<Unit filename="libjackmp.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Unit filename="regex.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -38,8 +38,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBJACKMP_EXPORTS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "." /I "../common" /I "../common/jack" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBJACKMP_EXPORTS" /D "__STDC__" /D "REGEX_MALLOC" /D "STDC_HEADERS" /D "__SMP__" /FR /YX /FD /c | |||
@@ -52,7 +53,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllEntryPoint" /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllEntryPoint" /dll /machine:I386 /out:"./Release/bin/libjackmp.dll" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "libjackmp - Win32 Debug" | |||
@@ -63,8 +64,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBJACKMP_EXPORTS" /YX /FD /GZ /c | |||
@@ -78,7 +79,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug/libjackmp_debug.dll" /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"./Debug/bin/libjackmp.dll" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -214,9 +215,5 @@ SOURCE=..\common\shm.c | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE="..\..\..\..\pthreads-win32\pthreadVC2.lib" | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp client library for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "libjackmp\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "libjackmp.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "libjackmp\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -0,0 +1,169 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |||
<CodeBlocks_project_file> | |||
<FileVersion major="1" minor="6" /> | |||
<Project> | |||
<Option title="libjackservermp" /> | |||
<Option pch_mode="2" /> | |||
<Option compiler="gcc" /> | |||
<Build> | |||
<Target title="Win32 Release"> | |||
<Option output="Release\bin\libjackservermp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Release" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-O2" /> | |||
<Add option="-Wall" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-DNDEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DLIBJACKDMP_EXPORTS" /> | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="ws2_32" /> | |||
</Linker> | |||
</Target> | |||
<Target title="Win32 Debug"> | |||
<Option output="Debug\bin\libjackservermp" prefix_auto="1" extension_auto="1" /> | |||
<Option object_output="Debug" /> | |||
<Option type="3" /> | |||
<Option compiler="gcc" /> | |||
<Option createDefFile="1" /> | |||
<Option createStaticLib="1" /> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-g" /> | |||
<Add option="-DWIN32" /> | |||
<Add option="-D_DEBUG" /> | |||
<Add option="-D_WINDOWS" /> | |||
<Add option="-D_MBCS" /> | |||
<Add option="-D_USRDLL" /> | |||
<Add option="-DLIBJACKDMP_EXPORTS" /> | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add directory="." /> | |||
<Add directory="..\common" /> | |||
<Add directory="..\common\jack" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
<Add library="user32" /> | |||
<Add library="gdi32" /> | |||
<Add library="winspool" /> | |||
<Add library="comdlg32" /> | |||
<Add library="advapi32" /> | |||
<Add library="shell32" /> | |||
<Add library="ole32" /> | |||
<Add library="oleaut32" /> | |||
<Add library="uuid" /> | |||
<Add library="odbc32" /> | |||
<Add library="odbccp32" /> | |||
<Add library="ws2_32" /> | |||
</Linker> | |||
</Target> | |||
</Build> | |||
<Compiler> | |||
<Add option="-Wall" /> | |||
<Add option="-fexceptions" /> | |||
</Compiler> | |||
<Linker> | |||
<Add directory="Release\bin" /> | |||
</Linker> | |||
<Unit filename="..\common\JackAPI.cpp" /> | |||
<Unit filename="..\common\JackActivationCount.cpp" /> | |||
<Unit filename="..\common\JackAudioDriver.cpp" /> | |||
<Unit filename="..\common\JackAudioPort.cpp" /> | |||
<Unit filename="..\common\JackClient.cpp" /> | |||
<Unit filename="..\common\JackConnectionManager.cpp" /> | |||
<Unit filename="..\common\JackControl.cpp" /> | |||
<Unit filename="..\common\JackDriver.cpp" /> | |||
<Unit filename="..\common\JackDriverLoader.cpp" /> | |||
<Unit filename="..\common\JackEngine.cpp" /> | |||
<Unit filename="..\common\JackEngineControl.cpp" /> | |||
<Unit filename="..\common\JackError.cpp" /> | |||
<Unit filename="..\common\JackExternalClient.cpp" /> | |||
<Unit filename="..\common\JackFrameTimer.cpp" /> | |||
<Unit filename="..\common\JackFreewheelDriver.cpp" /> | |||
<Unit filename="..\common\JackGlobals.cpp" /> | |||
<Unit filename="..\common\JackGraphManager.cpp" /> | |||
<Unit filename="..\common\JackInternalClient.cpp" /> | |||
<Unit filename="..\common\JackLoopbackDriver.cpp" /> | |||
<Unit filename="..\common\JackMessageBuffer.cpp" /> | |||
<Unit filename="..\common\JackMidiAPI.cpp" /> | |||
<Unit filename="..\common\JackMidiPort.cpp" /> | |||
<Unit filename="..\common\JackNetTool.cpp" /> | |||
<Unit filename="..\common\JackPort.cpp" /> | |||
<Unit filename="..\common\JackPortType.cpp" /> | |||
<Unit filename="..\common\JackRestartThreadedDriver.cpp" /> | |||
<Unit filename="..\common\JackServer.cpp" /> | |||
<Unit filename="..\common\JackServerAPI.cpp" /> | |||
<Unit filename="..\common\JackServerGlobals.cpp" /> | |||
<Unit filename="..\common\JackShmMem.cpp" /> | |||
<Unit filename="..\common\JackThreadedDriver.cpp" /> | |||
<Unit filename="..\common\JackTime.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="..\common\JackTools.cpp" /> | |||
<Unit filename="..\common\JackTransportEngine.cpp" /> | |||
<Unit filename="..\common\JackWaitThreadedDriver.cpp" /> | |||
<Unit filename="..\common\ringbuffer.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="..\common\shm.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="JackNetWinSocket.cpp" /> | |||
<Unit filename="JackWinNamedPipe.cpp" /> | |||
<Unit filename="JackWinNamedPipeClientChannel.cpp" /> | |||
<Unit filename="JackWinNamedPipeNotifyChannel.cpp" /> | |||
<Unit filename="JackWinNamedPipeServerChannel.cpp" /> | |||
<Unit filename="JackWinNamedPipeServerNotifyChannel.cpp" /> | |||
<Unit filename="JackWinProcessSync.cpp" /> | |||
<Unit filename="JackWinSemaphore.cpp" /> | |||
<Unit filename="JackWinThread.cpp" /> | |||
<Unit filename="getopt.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="getopt1.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="libjackservermp.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Unit filename="regex.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
<debugger /> | |||
<AutoVersioning> | |||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" /> | |||
<Settings autoincrement="0" date_declarations="0" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" /> | |||
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" /> | |||
</AutoVersioning> | |||
</Extensions> | |||
</Project> | |||
</CodeBlocks_project_file> |
@@ -38,8 +38,8 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBJACKDMP_EXPORTS" /YX /FD /c | |||
@@ -53,7 +53,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllEntryPoint" /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /entry:"DllEntryPoint" /dll /machine:I386 /out:"./Release/bin/libjackservermp.dll" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "libjackservermp - Win32 Debug" | |||
@@ -64,8 +64,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBJACKDMP_EXPORTS" /YX /FD /GZ /c | |||
@@ -79,7 +79,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug/libjackservermp_debug.dll" /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /dll /debug /machine:I386 /out:"./Debug/bin/libjackservermp.dll" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -188,6 +188,14 @@ SOURCE=..\common\JackMidiPort.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=..\common\JackNetTool.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\JackNetWinSocket.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=..\common\JackPort.cpp | |||
# End Source File | |||
# Begin Source File | |||
@@ -291,9 +299,5 @@ SOURCE=..\common\JackMidiPort.h | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\portaudio.lib | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -0,0 +1,41 @@ | |||
// Generated by ResEdit 1.4.3 | |||
// Copyright (C) 2006-2008 | |||
// http://www.resedit.net | |||
#include "resource.h" | |||
#include "afxres.h" | |||
// | |||
// Version Information resources | |||
// | |||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT | |||
1 VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
FILEOS VOS_UNKNOWN | |||
FILETYPE VFT_DLL | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040c04b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp server library for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "libjackservermp\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "libjackservermp.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "libjackservermp\0" | |||
VALUE "ProductVersion", "1, 9, 0, 0\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 1036, 1200 | |||
END | |||
END |
@@ -478,7 +478,8 @@ static int debug = 0; | |||
if (debug) print_double_string (w, s1, sz1, s2, sz2) | |||
extern void printchar (); | |||
//extern void printchar (); | |||
void printchar( int i ) {} | |||
/* Print the fastmap in human-readable form. */ | |||
@@ -4873,24 +4874,24 @@ regexec (preg, string, nmatch, pmatch, eflags) | |||
from either regcomp or regexec. We don't use PREG here. */ | |||
size_t | |||
regerror (errcode, preg, errbuf, errbuf_size) | |||
int errcode; | |||
const regex_t *preg; | |||
char *errbuf; | |||
size_t errbuf_size; | |||
regerror (errcode_vc, preg, errbuf, errbuf_size) | |||
int errcode_vc; | |||
const regex_t *preg; | |||
char *errbuf; | |||
size_t errbuf_size; | |||
{ | |||
const char *msg; | |||
size_t msg_size; | |||
if (errcode < 0 | |||
|| errcode >= (sizeof (re_error_msg) / sizeof (re_error_msg[0]))) | |||
if (errcode_vc < 0 | |||
|| errcode_vc >= (sizeof (re_error_msg) / sizeof (re_error_msg[0]))) | |||
/* Only error codes returned by the rest of the code should be passed | |||
to this routine. If we are given anything else, or if other regex | |||
code generates an invalid error code, then the program has a bug. | |||
Dump core so we can fix it. */ | |||
abort (); | |||
msg = re_error_msg[errcode]; | |||
msg = re_error_msg[errcode_vc]; | |||
/* POSIX doesn't require that we do anything in this case, but why | |||
not be nice. */ | |||
@@ -1,15 +1,4 @@ | |||
//{{NO_DEPENDENCIES}} | |||
// Microsoft Developer Studio generated include file. | |||
// Used by resource.rc | |||
// | |||
// Next default values for new objects | |||
// | |||
#ifdef APSTUDIO_INVOKED | |||
#ifndef APSTUDIO_READONLY_SYMBOLS | |||
#define _APS_NEXT_RESOURCE_VALUE 102 | |||
#define _APS_NEXT_COMMAND_VALUE 40001 | |||
#define _APS_NEXT_CONTROL_VALUE 1000 | |||
#define _APS_NEXT_SYMED_VALUE 101 | |||
#endif | |||
#ifndef IDC_STATIC | |||
#define IDC_STATIC (-1) | |||
#endif | |||
@@ -1,32 +1,18 @@ | |||
//Microsoft Developer Studio generated resource script. | |||
// | |||
#include "resource.h" | |||
#include "resource_vc.h" | |||
#define APSTUDIO_READONLY_SYMBOLS | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Generated from the TEXTINCLUDE 2 resource. | |||
// | |||
#include "afxres.h" | |||
///////////////////////////////////////////////////////////////////////////// | |||
#undef APSTUDIO_READONLY_SYMBOLS | |||
///////////////////////////////////////////////////////////////////////////// | |||
// French (France) resources | |||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) | |||
#ifdef _WIN32 | |||
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH | |||
#pragma code_page(1252) | |||
#endif //_WIN32 | |||
#endif | |||
#ifndef _MAC | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Version | |||
// | |||
VS_VERSION_INFO VERSIONINFO | |||
FILEVERSION 1,9,0,0 | |||
PRODUCTVERSION 1,9,0,0 | |||
@@ -46,7 +32,7 @@ BEGIN | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Grame\0" | |||
VALUE "FileDescription", "Jackmp library for Windows\0" | |||
VALUE "FileDescription", "Jackmp for Windows\0" | |||
VALUE "FileVersion", "1, 9, 0, 0\0" | |||
VALUE "InternalName", "libjackmp\0" | |||
VALUE "LegalCopyright", "Copyright Grame © 2006-2008\0" | |||
@@ -63,47 +49,28 @@ BEGIN | |||
VALUE "Translation", 0x40c, 1200 | |||
END | |||
END | |||
#endif // !_MAC | |||
#endif | |||
#ifdef APSTUDIO_INVOKED | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// TEXTINCLUDE | |||
// | |||
1 TEXTINCLUDE DISCARDABLE | |||
1 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"resource.h\0" | |||
"resource_vc.h\0" | |||
END | |||
2 TEXTINCLUDE DISCARDABLE | |||
2 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"#include ""afxres.h""\r\n" | |||
"\0" | |||
END | |||
3 TEXTINCLUDE DISCARDABLE | |||
3 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"\r\n" | |||
"\0" | |||
END | |||
#endif | |||
#endif // APSTUDIO_INVOKED | |||
#endif // French (France) resources | |||
///////////////////////////////////////////////////////////////////////////// | |||
#endif | |||
#ifndef APSTUDIO_INVOKED | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Generated from the TEXTINCLUDE 3 resource. | |||
// | |||
///////////////////////////////////////////////////////////////////////////// | |||
#endif // not APSTUDIO_INVOKED | |||
#endif |
@@ -0,0 +1,15 @@ | |||
//{{NO_DEPENDENCIES}} | |||
// Microsoft Developer Studio generated include file. | |||
// Used by resource.rc | |||
// | |||
// Next default values for new objects | |||
// | |||
#ifdef APSTUDIO_INVOKED | |||
#ifndef APSTUDIO_READONLY_SYMBOLS | |||
#define _APS_NEXT_RESOURCE_VALUE 102 | |||
#define _APS_NEXT_COMMAND_VALUE 40001 | |||
#define _APS_NEXT_CONTROL_VALUE 1000 | |||
#define _APS_NEXT_SYMED_VALUE 101 | |||
#endif | |||
#endif |
@@ -0,0 +1,197 @@ | |||
/* | |||
** Copyright (C) 2002-2008 Erik de Castro Lopo <erikd@mega-nerd.com> | |||
** | |||
** This program is free software; you can redistribute it and/or modify | |||
** it under the terms of the GNU General Public License as published by | |||
** the Free Software Foundation; either version 2 of the License, or | |||
** (at your option) any later version. | |||
** | |||
** This program is distributed in the hope that it will be useful, | |||
** but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
** GNU General Public License for more details. | |||
** | |||
** You should have received a copy of the GNU General Public License | |||
** along with this program; if not, write to the Free Software | |||
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
/* | |||
** This code is part of Secret Rabibt Code aka libsamplerate. A commercial | |||
** use license for this code is available, please see: | |||
** http://www.mega-nerd.com/SRC/procedure.html | |||
*/ | |||
/* | |||
** API documentation is available here: | |||
** http://www.mega-nerd.com/SRC/api.html | |||
*/ | |||
#ifndef SAMPLERATE_H | |||
#define SAMPLERATE_H | |||
#ifdef __cplusplus | |||
extern "C" { | |||
#endif /* __cplusplus */ | |||
/* Opaque data type SRC_STATE. */ | |||
typedef struct SRC_STATE_tag SRC_STATE ; | |||
/* SRC_DATA is used to pass data to src_simple() and src_process(). */ | |||
typedef struct | |||
{ float *data_in, *data_out ; | |||
long input_frames, output_frames ; | |||
long input_frames_used, output_frames_gen ; | |||
int end_of_input ; | |||
double src_ratio ; | |||
} SRC_DATA ; | |||
/* SRC_CB_DATA is used with callback based API. */ | |||
typedef struct | |||
{ long frames ; | |||
float *data_in ; | |||
} SRC_CB_DATA ; | |||
/* | |||
** User supplied callback function type for use with src_callback_new() | |||
** and src_callback_read(). First parameter is the same pointer that was | |||
** passed into src_callback_new(). Second parameter is pointer to a | |||
** pointer. The user supplied callback function must modify *data to | |||
** point to the start of the user supplied float array. The user supplied | |||
** function must return the number of frames that **data points to. | |||
*/ | |||
typedef long (*src_callback_t) (void *cb_data, float **data) ; | |||
/* | |||
** Standard initialisation function : return an anonymous pointer to the | |||
** internal state of the converter. Choose a converter from the enums below. | |||
** Error returned in *error. | |||
*/ | |||
SRC_STATE* src_new (int converter_type, int channels, int *error) ; | |||
/* | |||
** Initilisation for callback based API : return an anonymous pointer to the | |||
** internal state of the converter. Choose a converter from the enums below. | |||
** The cb_data pointer can point to any data or be set to NULL. Whatever the | |||
** value, when processing, user supplied function "func" gets called with | |||
** cb_data as first parameter. | |||
*/ | |||
SRC_STATE* src_callback_new (src_callback_t func, int converter_type, int channels, | |||
int *error, void* cb_data) ; | |||
/* | |||
** Cleanup all internal allocations. | |||
** Always returns NULL. | |||
*/ | |||
SRC_STATE* src_delete (SRC_STATE *state) ; | |||
/* | |||
** Standard processing function. | |||
** Returns non zero on error. | |||
*/ | |||
int src_process (SRC_STATE *state, SRC_DATA *data) ; | |||
/* | |||
** Callback based processing function. Read up to frames worth of data from | |||
** the converter int *data and return frames read or -1 on error. | |||
*/ | |||
long src_callback_read (SRC_STATE *state, double src_ratio, long frames, float *data) ; | |||
/* | |||
** Simple interface for performing a single conversion from input buffer to | |||
** output buffer at a fixed conversion ratio. | |||
** Simple interface does not require initialisation as it can only operate on | |||
** a single buffer worth of audio. | |||
*/ | |||
int src_simple (SRC_DATA *data, int converter_type, int channels) ; | |||
/* | |||
** This library contains a number of different sample rate converters, | |||
** numbered 0 through N. | |||
** | |||
** Return a string giving either a name or a more full description of each | |||
** sample rate converter or NULL if no sample rate converter exists for | |||
** the given value. The converters are sequentially numbered from 0 to N. | |||
*/ | |||
const char *src_get_name (int converter_type) ; | |||
const char *src_get_description (int converter_type) ; | |||
const char *src_get_version (void) ; | |||
/* | |||
** Set a new SRC ratio. This allows step responses | |||
** in the conversion ratio. | |||
** Returns non zero on error. | |||
*/ | |||
int src_set_ratio (SRC_STATE *state, double new_ratio) ; | |||
/* | |||
** Reset the internal SRC state. | |||
** Does not modify the quality settings. | |||
** Does not free any memory allocations. | |||
** Returns non zero on error. | |||
*/ | |||
int src_reset (SRC_STATE *state) ; | |||
/* | |||
** Return TRUE if ratio is a valid conversion ratio, FALSE | |||
** otherwise. | |||
*/ | |||
int src_is_valid_ratio (double ratio) ; | |||
/* | |||
** Return an error number. | |||
*/ | |||
int src_error (SRC_STATE *state) ; | |||
/* | |||
** Convert the error number into a string. | |||
*/ | |||
const char* src_strerror (int error) ; | |||
/* | |||
** The following enums can be used to set the interpolator type | |||
** using the function src_set_converter(). | |||
*/ | |||
enum | |||
{ | |||
SRC_SINC_BEST_QUALITY = 0, | |||
SRC_SINC_MEDIUM_QUALITY = 1, | |||
SRC_SINC_FASTEST = 2, | |||
SRC_ZERO_ORDER_HOLD = 3, | |||
SRC_LINEAR = 4, | |||
} ; | |||
/* | |||
** Extra helper functions for converting from short to float and | |||
** back again. | |||
*/ | |||
void src_short_to_float_array (const short *in, float *out, int len) ; | |||
void src_float_to_short_array (const float *in, short *out, int len) ; | |||
void src_int_to_float_array (const int *in, float *out, int len) ; | |||
void src_float_to_int_array (const float *in, int *out, int len) ; | |||
#ifdef __cplusplus | |||
} /* extern "C" */ | |||
#endif /* __cplusplus */ | |||
#endif /* SAMPLERATE_H */ | |||
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/testSynchoServerClient.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "testSynchoServerClient - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/testSynchoServerClient.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/testSynchroClient.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "testSynchroClient - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/testSynchroClient.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||
@@ -37,8 +37,9 @@ RSC=rc.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Output_Dir "./Release" | |||
# PROP Intermediate_Dir "./Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c | |||
@@ -49,7 +50,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"./Release/bin/testSynchroServer.exe" /libpath:"./Release" /libpath:"./Release/bin" | |||
!ELSEIF "$(CFG)" == "testSynchroServer - Win32 Debug" | |||
@@ -60,8 +61,8 @@ LINK32=link.exe | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Output_Dir "./Debug" | |||
# PROP Intermediate_Dir "./Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c | |||
@@ -73,7 +74,7 @@ BSC32=bscmake.exe | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"./Debug/bin/testSynchroServer.exe" /pdbtype:sept /libpath:"./Debug" /libpath:"./Debug/bin" | |||
!ENDIF | |||