00001 #include "JackAlsaDriver.h"
00002 #include "JackPort.h"
00003 #include "alsa_midi_impl.h"
00004
00005 using Jack::JackAlsaDriver;
00006
00007 struct fake_port_t {
00008 JackAlsaDriver* driver;
00009 int port_id;
00010 fake_port_t(JackAlsaDriver *d, int i) : driver(d), port_id(i) {}
00011 };
00012
00013 int JACK_is_realtime(jack_client_t* client)
00014 {
00015 return ((JackAlsaDriver*)client)->is_realtime();
00016 }
00017
00018 int JACK_client_create_thread(jack_client_t* client, pthread_t *thread, int priority, int realtime, void *(*start_routine)(void*), void *arg)
00019 {
00020 return ((JackAlsaDriver*)client)->create_thread(thread, priority, realtime, start_routine, arg);
00021 }
00022
00023 jack_port_t* JACK_port_register(jack_client_t *client, const char *port_name, const char *port_type, unsigned long flags, unsigned long buffer_size)
00024 {
00025 JackAlsaDriver *driver = (JackAlsaDriver*)client;
00026 int port_id = driver->port_register(port_name, port_type, flags, buffer_size);
00027 if (port_id == NO_PORT)
00028 return 0;
00029 else
00030 return (jack_port_t*) new fake_port_t(driver, port_id);
00031 }
00032
00033 int JACK_port_unregister(jack_client_t *client, jack_port_t *port)
00034 {
00035 fake_port_t* real = (fake_port_t*)port;
00036 int res = 0;
00037 delete real;
00038 return res;
00039 }
00040
00041 void* JACK_port_get_buffer(jack_port_t *port, jack_nframes_t nframes)
00042 {
00043 fake_port_t* real = (fake_port_t*)port;
00044 return real->driver->port_get_buffer(real->port_id, nframes);
00045 }
00046
00047 int JACK_port_set_alias(jack_port_t *port, const char* name)
00048 {
00049 fake_port_t* real = (fake_port_t*)port;
00050 return real->driver->port_set_alias(real->port_id, name);
00051 }
00052
00053 jack_nframes_t JACK_get_sample_rate(jack_client_t *client)
00054 {
00055 return ((JackAlsaDriver*)client)->get_sample_rate();
00056 }
00057
00058 jack_nframes_t JACK_frame_time(jack_client_t *client)
00059 {
00060 return ((JackAlsaDriver*)client)->frame_time();
00061 }
00062
00063 jack_nframes_t JACK_last_frame_time(jack_client_t *client)
00064 {
00065 return ((JackAlsaDriver*)client)->last_frame_time();
00066 }