Browse Source

update firewire driver options

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3539 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/v1.9.3
pieterpalmers 16 years ago
parent
commit
e8aeb191b6
1 changed files with 36 additions and 34 deletions
  1. +36
    -34
      linux/firewire/JackFFADODriver.cpp

+ 36
- 34
linux/firewire/JackFFADODriver.cpp View File

@@ -48,9 +48,6 @@ namespace Jack


#define jack_get_microseconds GetMicroSeconds #define jack_get_microseconds GetMicroSeconds


#define SAMPLE_MAX_24BIT 8388608.0f
#define SAMPLE_MAX_16BIT 32768.0f

int int
JackFFADODriver::ffado_driver_read (ffado_driver_t * driver, jack_nframes_t nframes) JackFFADODriver::ffado_driver_read (ffado_driver_t * driver, jack_nframes_t nframes)
{ {
@@ -250,10 +247,10 @@ JackFFADODriver::ffado_driver_wait (ffado_driver_t *driver, int extra_fd, int *s
wait_enter = jack_get_microseconds (); wait_enter = jack_get_microseconds ();
if (wait_enter > driver->wait_next) { if (wait_enter > driver->wait_next) {
/* /*
* This processing cycle was delayed past the
* next due interrupt! Do not account this as
* a wakeup delay:
*/
* This processing cycle was delayed past the
* next due interrupt! Do not account this as
* a wakeup delay:
*/
driver->wait_next = 0; driver->wait_next = 0;
driver->wait_late++; driver->wait_late++;
} }
@@ -270,7 +267,7 @@ JackFFADODriver::ffado_driver_wait (ffado_driver_t *driver, int extra_fd, int *s
} }
driver->wait_last = wait_ret; driver->wait_last = wait_ret;
driver->wait_next = wait_ret + driver->period_usecs; driver->wait_next = wait_ret + driver->period_usecs;
// driver->engine->transport_cycle_start (driver->engine, wait_ret);
// driver->engine->transport_cycle_start (driver->engine, wait_ret);


if(response == ffado_wait_ok) { if(response == ffado_wait_ok) {
// all good // all good
@@ -344,8 +341,8 @@ JackFFADODriver::SetBufferSize (jack_nframes_t nframes)
/* /*
driver->period_size = nframes; driver->period_size = nframes;
driver->period_usecs = driver->period_usecs =
(jack_time_t) floor ((((float) nframes) / driver->sample_rate)
* 1000000.0f);
(jack_time_t) floor ((((float) nframes) / driver->sample_rate)
* 1000000.0f);
*/ */


/* tell the engine to change its buffer size */ /* tell the engine to change its buffer size */
@@ -376,16 +373,16 @@ JackFFADODriver::ffado_driver_new (const char *name,
/* Setup the jack interfaces */ /* Setup the jack interfaces */
jack_driver_nt_init ((jack_driver_nt_t *) driver); jack_driver_nt_init ((jack_driver_nt_t *) driver);


/* driver->nt_attach = (JackDriverNTAttachFunction) ffado_driver_attach;
driver->nt_detach = (JackDriverNTDetachFunction) ffado_driver_detach;
driver->nt_start = (JackDriverNTStartFunction) ffado_driver_start;
driver->nt_stop = (JackDriverNTStopFunction) ffado_driver_stop;
driver->nt_run_cycle = (JackDriverNTRunCycleFunction) ffado_driver_run_cycle;
driver->null_cycle = (JackDriverNullCycleFunction) ffado_driver_null_cycle;
driver->write = (JackDriverReadFunction) ffado_driver_write;
driver->read = (JackDriverReadFunction) ffado_driver_read;
driver->nt_bufsize = (JackDriverNTBufSizeFunction) ffado_driver_bufsize;
*/
/* driver->nt_attach = (JackDriverNTAttachFunction) ffado_driver_attach;
driver->nt_detach = (JackDriverNTDetachFunction) ffado_driver_detach;
driver->nt_start = (JackDriverNTStartFunction) ffado_driver_start;
driver->nt_stop = (JackDriverNTStopFunction) ffado_driver_stop;
driver->nt_run_cycle = (JackDriverNTRunCycleFunction) ffado_driver_run_cycle;
driver->null_cycle = (JackDriverNullCycleFunction) ffado_driver_null_cycle;
driver->write = (JackDriverReadFunction) ffado_driver_write;
driver->read = (JackDriverReadFunction) ffado_driver_read;
driver->nt_bufsize = (JackDriverNTBufSizeFunction) ffado_driver_bufsize;
*/


/* copy command line parameter contents to the driver structure */ /* copy command line parameter contents to the driver structure */
memcpy(&driver->settings, params, sizeof(ffado_jack_settings_t)); memcpy(&driver->settings, params, sizeof(ffado_jack_settings_t));
@@ -398,7 +395,7 @@ JackFFADODriver::ffado_driver_new (const char *name,
driver->period_usecs = driver->period_usecs =
(jack_time_t) floor ((((float) driver->period_size) * 1000000.0f) / driver->sample_rate); (jack_time_t) floor ((((float) driver->period_size) * 1000000.0f) / driver->sample_rate);


// driver->client = client;
// driver->client = client;
driver->engine = NULL; driver->engine = NULL;


memset(&driver->device_options, 0, sizeof(driver->device_options)); memset(&driver->device_options, 0, sizeof(driver->device_options));
@@ -919,6 +916,8 @@ extern "C"


ffado_jack_settings_t cmlparams; ffado_jack_settings_t cmlparams;


char *device_name="hw:0";

cmlparams.period_size_set = 0; cmlparams.period_size_set = 0;
cmlparams.sample_rate_set = 0; cmlparams.sample_rate_set = 0;
cmlparams.buffer_size_set = 0; cmlparams.buffer_size_set = 0;
@@ -942,6 +941,9 @@ extern "C"
param = (jack_driver_param_t *) node->data; param = (jack_driver_param_t *) node->data;


switch (param->character) { switch (param->character) {
case 'd':
device_name = strdup (param->value.str);
break;
case 'p': case 'p':
cmlparams.period_size = param->value.ui; cmlparams.period_size = param->value.ui;
cmlparams.period_size_set = 1; cmlparams.period_size_set = 1;
@@ -954,15 +956,11 @@ extern "C"
cmlparams.sample_rate = param->value.ui; cmlparams.sample_rate = param->value.ui;
cmlparams.sample_rate_set = 1; cmlparams.sample_rate_set = 1;
break; break;
case 'C':
cmlparams.capture_ports = 1;
break;
case 'P':
cmlparams.playback_ports = 1;
case 'i':
cmlparams.capture_ports = param->value.ui;
break; break;
case 'D':
cmlparams.capture_ports = 1;
cmlparams.playback_ports = 1;
case 'o':
cmlparams.playback_ports = param->value.ui;
break; break;
case 'I': case 'I':
cmlparams.capture_frame_latency = param->value.ui; cmlparams.capture_frame_latency = param->value.ui;
@@ -970,10 +968,11 @@ extern "C"
case 'O': case 'O':
cmlparams.playback_frame_latency = param->value.ui; cmlparams.playback_frame_latency = param->value.ui;
break; break;
// ignore these for now
case 'i':
case 'x':
cmlparams.slave_mode = param->value.ui;
break; break;
case 'o':
case 'X':
cmlparams.snoop_mode = param->value.ui;
break; break;
case 'v': case 'v':
cmlparams.verbose_level = param->value.ui; cmlparams.verbose_level = param->value.ui;
@@ -982,10 +981,13 @@ extern "C"


/* duplex is the default */ /* duplex is the default */
if (!cmlparams.playback_ports && !cmlparams.capture_ports) { if (!cmlparams.playback_ports && !cmlparams.capture_ports) {
cmlparams.playback_ports = TRUE;
cmlparams.capture_ports = TRUE;
cmlparams.playback_ports = 1;
cmlparams.capture_ports = 1;
} }


// temporary
cmlparams.device_info = device_name;

Jack::JackFFADODriver* ffado_driver = new Jack::JackFFADODriver("system", "firewire_pcm", engine, table); Jack::JackFFADODriver* ffado_driver = new Jack::JackFFADODriver("system", "firewire_pcm", engine, table);
Jack::JackDriverClientInterface* threaded_driver = new Jack::JackThreadedDriver(ffado_driver); Jack::JackDriverClientInterface* threaded_driver = new Jack::JackThreadedDriver(ffado_driver);
// Special open for FFADO driver... // Special open for FFADO driver...


Loading…
Cancel
Save