summaryrefslogtreecommitdiff
path: root/linux/firewire
diff options
context:
space:
mode:
authorpieterpalmers <pieterpalmers@0c269be4-1314-0410-8aa9-9f06e86f4224>2009-05-17 09:44:33 +0000
committerpieterpalmers <pieterpalmers@0c269be4-1314-0410-8aa9-9f06e86f4224>2009-05-17 09:44:33 +0000
commite8aeb191b6d18bb4c13c20819e72892eda7daa18 (patch)
tree7f0fb1020dda369ec1088b066ddb82083a0a2b96 /linux/firewire
parentd38a6c9c1d683cd3e36782d9e36c700ec674b5c9 (diff)
downloadjack2-e8aeb191b6d18bb4c13c20819e72892eda7daa18.tar.gz
update firewire driver options
git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3539 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'linux/firewire')
-rw-r--r--linux/firewire/JackFFADODriver.cpp70
1 files changed, 36 insertions, 34 deletions
diff --git a/linux/firewire/JackFFADODriver.cpp b/linux/firewire/JackFFADODriver.cpp
index 65e74caa..b6080d69 100644
--- a/linux/firewire/JackFFADODriver.cpp
+++ b/linux/firewire/JackFFADODriver.cpp
@@ -48,9 +48,6 @@ namespace Jack
#define jack_get_microseconds GetMicroSeconds
-#define SAMPLE_MAX_24BIT 8388608.0f
-#define SAMPLE_MAX_16BIT 32768.0f
-
int
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 ();
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_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_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) {
// all good
@@ -344,8 +341,8 @@ JackFFADODriver::SetBufferSize (jack_nframes_t nframes)
/*
driver->period_size = nframes;
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 */
@@ -376,16 +373,16 @@ JackFFADODriver::ffado_driver_new (const char *name,
/* Setup the jack interfaces */
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 */
memcpy(&driver->settings, params, sizeof(ffado_jack_settings_t));
@@ -398,7 +395,7 @@ JackFFADODriver::ffado_driver_new (const char *name,
driver->period_usecs =
(jack_time_t) floor ((((float) driver->period_size) * 1000000.0f) / driver->sample_rate);
-// driver->client = client;
+// driver->client = client;
driver->engine = NULL;
memset(&driver->device_options, 0, sizeof(driver->device_options));
@@ -919,6 +916,8 @@ extern "C"
ffado_jack_settings_t cmlparams;
+ char *device_name="hw:0";
+
cmlparams.period_size_set = 0;
cmlparams.sample_rate_set = 0;
cmlparams.buffer_size_set = 0;
@@ -942,6 +941,9 @@ extern "C"
param = (jack_driver_param_t *) node->data;
switch (param->character) {
+ case 'd':
+ device_name = strdup (param->value.str);
+ break;
case 'p':
cmlparams.period_size = param->value.ui;
cmlparams.period_size_set = 1;
@@ -954,15 +956,11 @@ extern "C"
cmlparams.sample_rate = param->value.ui;
cmlparams.sample_rate_set = 1;
break;
- case 'C':
- cmlparams.capture_ports = 1;
- break;
- case 'P':
- cmlparams.playback_ports = 1;
+ case 'i':
+ cmlparams.capture_ports = param->value.ui;
break;
- case 'D':
- cmlparams.capture_ports = 1;
- cmlparams.playback_ports = 1;
+ case 'o':
+ cmlparams.playback_ports = param->value.ui;
break;
case 'I':
cmlparams.capture_frame_latency = param->value.ui;
@@ -970,10 +968,11 @@ extern "C"
case 'O':
cmlparams.playback_frame_latency = param->value.ui;
break;
- // ignore these for now
- case 'i':
+ case 'x':
+ cmlparams.slave_mode = param->value.ui;
break;
- case 'o':
+ case 'X':
+ cmlparams.snoop_mode = param->value.ui;
break;
case 'v':
cmlparams.verbose_level = param->value.ui;
@@ -982,10 +981,13 @@ extern "C"
/* duplex is the default */
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::JackDriverClientInterface* threaded_driver = new Jack::JackThreadedDriver(ffado_driver);
// Special open for FFADO driver...