summaryrefslogtreecommitdiff
path: root/solaris
diff options
context:
space:
mode:
authorNedko Arnaudov <nedko@arnaudov.name>2011-04-22 22:14:31 +0300
committerNedko Arnaudov <nedko@arnaudov.name>2011-04-22 22:19:13 +0300
commita9e4628340a0fe4d36cc0e684c71af16a4e3717d (patch)
tree357220e4a7453dfce66dabd3427b641718ed3eb8 /solaris
parentcfa7575fcc05e8cfb6dee10d94ce6f7b4b79d7ad (diff)
downloadjack2-a9e4628340a0fe4d36cc0e684c71af16a4e3717d.tar.gz
helper functions for jack_driver_desc_t construction
The main goal is to reduce risk of mismatch between allocated and initialized parameter numbers.
Diffstat (limited to 'solaris')
-rw-r--r--solaris/oss/JackBoomerDriver.cpp151
-rw-r--r--solaris/oss/JackBoomerDriver.h1
-rw-r--r--solaris/oss/JackOSSAdapter.cpp145
-rw-r--r--solaris/oss/JackOSSAdapter.h1
-rw-r--r--solaris/oss/JackOSSDriver.cpp151
-rw-r--r--solaris/oss/JackOSSDriver.h1
6 files changed, 112 insertions, 338 deletions
diff --git a/solaris/oss/JackBoomerDriver.cpp b/solaris/oss/JackBoomerDriver.cpp
index 63446f14..1442a278 100644
--- a/solaris/oss/JackBoomerDriver.cpp
+++ b/solaris/oss/JackBoomerDriver.cpp
@@ -817,119 +817,44 @@ extern "C"
SERVER_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));
-
- strcpy(desc->name, "boomer"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1
- strcpy(desc->desc, "Boomer/OSS API based audio backend"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1
-
- desc->nparams = OSS_DRIVER_N_PARAMS;
- desc->params = (jack_driver_param_desc_t*)calloc(desc->nparams, sizeof(jack_driver_param_desc_t));
-
- i = 0;
- strcpy(desc->params[i].name, "rate");
- desc->params[i].character = 'r';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_FS;
- strcpy(desc->params[i].short_desc, "Sample rate");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "period");
- desc->params[i].character = 'p';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_BLKSIZE;
- strcpy(desc->params[i].short_desc, "Frames per period");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "nperiods");
- desc->params[i].character = 'n';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_NPERIODS;
- strcpy(desc->params[i].short_desc, "Number of periods to prefill output buffer");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "wordlength");
- desc->params[i].character = 'w';
- desc->params[i].type = JackDriverParamInt;
- desc->params[i].value.i = OSS_DRIVER_DEF_BITS;
- strcpy(desc->params[i].short_desc, "Word length");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "inchannels");
- desc->params[i].character = 'i';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_INS;
- strcpy(desc->params[i].short_desc, "Capture channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "outchannels");
- desc->params[i].character = 'o';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_OUTS;
- strcpy(desc->params[i].short_desc, "Playback channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "excl");
- desc->params[i].character = 'e';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = false;
- strcpy(desc->params[i].short_desc, "Exclusif (O_EXCL) access mode");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "capture");
- desc->params[i].character = 'C';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Input device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "playback");
- desc->params[i].character = 'P';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Output device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy (desc->params[i].name, "device");
- desc->params[i].character = 'd';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "OSS device name");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "input-latency");
- desc->params[i].character = 'I';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = 0;
- strcpy(desc->params[i].short_desc, "Extra input latency");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "output-latency");
- desc->params[i].character = 'O';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = 0;
- strcpy(desc->params[i].short_desc, "Extra output latency");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "sync-io");
- desc->params[i].character = 'S';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = false;
- strcpy(desc->params[i].short_desc, "In duplex mode, synchronize input and output");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ jack_driver_desc_t * desc;
+ jack_driver_desc_filler_t filler;
+ jack_driver_param_value_t value;
+
+ desc = jack_driver_descriptor_construct("boomer", "Boomer/OSS API based audio backend", &filler);
+
+ value.ui = OSS_DRIVER_DEF_FS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "rate", 'r', JackDriverParamUInt, &value, NULL, "Sample rate", NULL);
+
+ value.ui = OSS_DRIVER_DEF_BLKSIZE;
+ jack_driver_descriptor_add_parameter(desc, &filler, "period", 'p', JackDriverParamUInt, &value, NULL, "Frames per period", NULL);
+
+ value.ui = OSS_DRIVER_DEF_NPERIODS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "nperiods", 'n', JackDriverParamUInt, &value, NULL, "Number of periods to prefill output buffer", NULL);
+
+ value.i = OSS_DRIVER_DEF_BITS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "wordlength", 'w', JackDriverParamInt, &value, NULL, "Word length", NULL);
+
+ value.ui = OSS_DRIVER_DEF_INS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "inchannels", 'i', JackDriverParamUInt, &value, NULL, "Capture channels", NULL);
+
+ value.ui = OSS_DRIVER_DEF_OUTS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "outchannels", 'o', JackDriverParamUInt, &value, NULL, "Playback channels", NULL);
+
+ value.i = false;
+ jack_driver_descriptor_add_parameter(desc, &filler, "excl", 'e', JackDriverParamBool, &value, NULL, "Exclusif (O_EXCL) access mode", NULL);
+
+ strcpy(value.str, OSS_DRIVER_DEF_DEV);
+ jack_driver_descriptor_add_parameter(desc, &filler, "capture", 'C', JackDriverParamString, &value, NULL, "Input device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "playback", 'P', JackDriverParamString, &value, NULL, "Output device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "device", 'd', JackDriverParamString, &value, NULL, "OSS device name", NULL);
+
+ value.ui = 0;
+ jack_driver_descriptor_add_parameter(desc, &filler, "input-latency", 'I', JackDriverParamUInt, &value, NULL, "Extra input latency", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "output-latency", 'O', JackDriverParamUInt, &value, NULL, "Extra output latency", NULL);
+
+ value.i = false;
+ jack_driver_descriptor_add_parameter(desc, &filler, "sync-io", 'S', JackDriverParamBool, &value, NULL, "In duplex mode, synchronize input and output", NULL);
return desc;
}
diff --git a/solaris/oss/JackBoomerDriver.h b/solaris/oss/JackBoomerDriver.h
index c98e28a3..79103b30 100644
--- a/solaris/oss/JackBoomerDriver.h
+++ b/solaris/oss/JackBoomerDriver.h
@@ -30,7 +30,6 @@ namespace Jack
typedef jack_default_audio_sample_t jack_sample_t;
-#define OSS_DRIVER_N_PARAMS 13
#define OSS_DRIVER_DEF_DEV "/dev/dsp"
#define OSS_DRIVER_DEF_FS 48000
#define OSS_DRIVER_DEF_BLKSIZE 1024
diff --git a/solaris/oss/JackOSSAdapter.cpp b/solaris/oss/JackOSSAdapter.cpp
index de3fe89f..9647bc4c 100644
--- a/solaris/oss/JackOSSAdapter.cpp
+++ b/solaris/oss/JackOSSAdapter.cpp
@@ -633,119 +633,46 @@ extern "C"
SERVER_EXPORT jack_driver_desc_t* jack_get_descriptor()
{
- jack_driver_desc_t *desc;
- unsigned int i;
- desc = (jack_driver_desc_t*)calloc(1, sizeof(jack_driver_desc_t));
-
- strcpy(desc->name, "audioadapter"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1
- strcpy(desc->desc, "netjack audio <==> net backend adapter"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1
-
- desc->nparams = OSS_DRIVER_N_PARAMS;
- desc->params = (jack_driver_param_desc_t*)calloc(desc->nparams, sizeof(jack_driver_param_desc_t));
-
- i = 0;
- strcpy(desc->params[i].name, "rate");
- desc->params[i].character = 'r';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_FS;
- strcpy(desc->params[i].short_desc, "Sample rate");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "period");
- desc->params[i].character = 'p';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_BLKSIZE;
- strcpy(desc->params[i].short_desc, "Frames per period");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "nperiods");
- desc->params[i].character = 'n';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_NPERIODS;
- strcpy(desc->params[i].short_desc, "Number of periods to prefill output buffer");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "wordlength");
- desc->params[i].character = 'w';
- desc->params[i].type = JackDriverParamInt;
- desc->params[i].value.i = OSS_DRIVER_DEF_BITS;
- strcpy(desc->params[i].short_desc, "Word length");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "inchannels");
- desc->params[i].character = 'i';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_INS;
- strcpy(desc->params[i].short_desc, "Capture channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "outchannels");
- desc->params[i].character = 'o';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_OUTS;
- strcpy(desc->params[i].short_desc, "Playback channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "excl");
- desc->params[i].character = 'e';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = false;
- strcpy(desc->params[i].short_desc, "Exclusif (O_EXCL) access mode");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "capture");
- desc->params[i].character = 'C';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Input device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ jack_driver_desc_t * desc;
+ jack_driver_desc_filler_t filler;
+ jack_driver_param_value_t value;
+
+ desc = jack_driver_descriptor_construct("audioadapter", "netjack audio <==> net backend adapter", &filler);
+
+ value.ui = OSS_DRIVER_DEF_FS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "rate", 'r', JackDriverParamUInt, &value, NULL, "Sample rate", NULL);
+
+ value.ui = OSS_DRIVER_DEF_BLKSIZE;
+ jack_driver_descriptor_add_parameter(desc, &filler, "period", 'p', JackDriverParamUInt, &value, NULL, "Frames per period", NULL);
+
+ value.ui = OSS_DRIVER_DEF_NPERIODS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "nperiods", 'n', JackDriverParamUInt, &value, NULL, "Number of periods to prefill output buffer", NULL);
+
+ value.i = OSS_DRIVER_DEF_BITS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "wordlength", 'w', JackDriverParamInt, &value, NULL, "Word length", NULL);
+
+ value.ui = OSS_DRIVER_DEF_INS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "inchannels", 'i', JackDriverParamUInt, &value, NULL, "Capture channels", NULL);
- i++;
- strcpy(desc->params[i].name, "playback");
- desc->params[i].character = 'P';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Output device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy (desc->params[i].name, "device");
- desc->params[i].character = 'd';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "OSS device name");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ value.ui = OSS_DRIVER_DEF_OUTS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "outchannels", 'o', JackDriverParamUInt, &value, NULL, "Playback channels", NULL);
+
+ value.i = false;
+ jack_driver_descriptor_add_parameter(desc, &filler, "excl", 'e', JackDriverParamBool, &value, NULL, "Exclusif (O_EXCL) access mode", NULL);
+
+ strcpy(value.str, OSS_DRIVER_DEF_DEV);
+ jack_driver_descriptor_add_parameter(desc, &filler, "capture", 'C', JackDriverParamString, &value, NULL, "Input device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "playback", 'P', JackDriverParamString, &value, NULL, "Output device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "device", 'd', JackDriverParamString, &value, NULL, "OSS device name", NULL);
- i++;
- strcpy(desc->params[i].name, "ignorehwbuf");
- desc->params[i].character = 'b';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = true;
- strcpy(desc->params[i].short_desc, "Ignore hardware period size");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ value.i = true;
+ jack_driver_descriptor_add_parameter(desc, &filler, "ignorehwbuf", 'b', JackDriverParamBool, &value, NULL, "Ignore hardware period size", NULL);
- i++;
- strcpy(desc->params[i].name, "quality");
- desc->params[i].character = 'q';
- desc->params[i].type = JackDriverParamInt;
- desc->params[i].value.ui = 0;
- strcpy(desc->params[i].short_desc, "Resample algorithm quality (0 - 4)");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ value.ui = 0;
+ jack_driver_descriptor_add_parameter(desc, &filler, "quality", 'q', JackDriverParamInt, &value, NULL, "Resample algorithm quality (0 - 4)", NULL);
- i++;
- strcpy(desc->params[i].name, "ring-buffer");
- desc->params[i].character = 'g';
- desc->params[i].type = JackDriverParamInt;
- desc->params[i].value.ui = 32768;
- strcpy(desc->params[i].short_desc, "Fixed ringbuffer size");
- strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)");
+ value.i = 32768;
+ jack_driver_descriptor_add_parameter(desc, &filler, "ring-buffer", 'g', JackDriverParamInt, &value, NULL, "Fixed ringbuffer size", "Fixed ringbuffer size (if not set => automatic adaptative)");
return desc;
}
diff --git a/solaris/oss/JackOSSAdapter.h b/solaris/oss/JackOSSAdapter.h
index 6e739f88..2cc6ae6b 100644
--- a/solaris/oss/JackOSSAdapter.h
+++ b/solaris/oss/JackOSSAdapter.h
@@ -34,7 +34,6 @@ namespace Jack
typedef jack_default_audio_sample_t jack_sample_t;
-#define OSS_DRIVER_N_PARAMS 13
#define OSS_DRIVER_DEF_DEV "/dev/dsp"
#define OSS_DRIVER_DEF_FS 48000
#define OSS_DRIVER_DEF_BLKSIZE 1024
diff --git a/solaris/oss/JackOSSDriver.cpp b/solaris/oss/JackOSSDriver.cpp
index 444fce44..fa5d8967 100644
--- a/solaris/oss/JackOSSDriver.cpp
+++ b/solaris/oss/JackOSSDriver.cpp
@@ -734,119 +734,44 @@ extern "C"
SERVER_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));
-
- strcpy(desc->name, "oss"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1
- strcpy(desc->desc, "OSS API based audio backend"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1
-
- desc->nparams = OSS_DRIVER_N_PARAMS;
- desc->params = (jack_driver_param_desc_t*)calloc(desc->nparams, sizeof(jack_driver_param_desc_t));
-
- i = 0;
- strcpy(desc->params[i].name, "rate");
- desc->params[i].character = 'r';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_FS;
- strcpy(desc->params[i].short_desc, "Sample rate");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "period");
- desc->params[i].character = 'p';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_BLKSIZE;
- strcpy(desc->params[i].short_desc, "Frames per period");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "nperiods");
- desc->params[i].character = 'n';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_NPERIODS;
- strcpy(desc->params[i].short_desc, "Number of periods to prefill output buffer");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "wordlength");
- desc->params[i].character = 'w';
- desc->params[i].type = JackDriverParamInt;
- desc->params[i].value.i = OSS_DRIVER_DEF_BITS;
- strcpy(desc->params[i].short_desc, "Word length");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "inchannels");
- desc->params[i].character = 'i';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_INS;
- strcpy(desc->params[i].short_desc, "Capture channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "outchannels");
- desc->params[i].character = 'o';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = OSS_DRIVER_DEF_OUTS;
- strcpy(desc->params[i].short_desc, "Playback channels");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "excl");
- desc->params[i].character = 'e';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = false;
- strcpy(desc->params[i].short_desc, "Exclusif (O_EXCL) access mode");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "capture");
- desc->params[i].character = 'C';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Input device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "playback");
- desc->params[i].character = 'P';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "Output device");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy (desc->params[i].name, "device");
- desc->params[i].character = 'd';
- desc->params[i].type = JackDriverParamString;
- strcpy(desc->params[i].value.str, OSS_DRIVER_DEF_DEV);
- strcpy(desc->params[i].short_desc, "OSS device name");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "ignorehwbuf");
- desc->params[i].character = 'b';
- desc->params[i].type = JackDriverParamBool;
- desc->params[i].value.i = false;
- strcpy(desc->params[i].short_desc, "Ignore hardware period size");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "input-latency");
- desc->params[i].character = 'I';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = 0;
- strcpy(desc->params[i].short_desc, "Extra input latency");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
-
- i++;
- strcpy(desc->params[i].name, "output-latency");
- desc->params[i].character = 'O';
- desc->params[i].type = JackDriverParamUInt;
- desc->params[i].value.ui = 0;
- strcpy(desc->params[i].short_desc, "Extra output latency");
- strcpy(desc->params[i].long_desc, desc->params[i].short_desc);
+ jack_driver_desc_t * desc;
+ jack_driver_desc_filler_t filler;
+ jack_driver_param_value_t value;
+
+ desc = jack_driver_descriptor_construct("oss", "OSS API based audio backend", &filler);
+
+ value.ui = OSS_DRIVER_DEF_FS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "rate", 'r', JackDriverParamUInt, &value, NULL, "Sample rate", NULL);
+
+ value.ui = OSS_DRIVER_DEF_BLKSIZE;
+ jack_driver_descriptor_add_parameter(desc, &filler, "period", 'p', JackDriverParamUInt, &value, NULL, "Frames per period", NULL);
+
+ value.ui = OSS_DRIVER_DEF_NPERIODS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "nperiods", 'n', JackDriverParamUInt, &value, NULL, "Number of periods to prefill output buffer", NULL);
+
+ value.i = OSS_DRIVER_DEF_BITS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "wordlength", 'w', JackDriverParamInt, &value, NULL, "Word length", NULL);
+
+ value.ui = OSS_DRIVER_DEF_INS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "inchannels", 'i', JackDriverParamUInt, &value, NULL, "Capture channels", NULL);
+
+ value.ui = OSS_DRIVER_DEF_OUTS;
+ jack_driver_descriptor_add_parameter(desc, &filler, "outchannels", 'o', JackDriverParamUInt, &value, NULL, "Playback channels", NULL);
+
+ value.i = false;
+ jack_driver_descriptor_add_parameter(desc, &filler, "excl", 'e', JackDriverParamBool, &value, NULL, "Exclusif (O_EXCL) access mode", NULL);
+
+ strcpy(value.str, OSS_DRIVER_DEF_DEV);
+ jack_driver_descriptor_add_parameter(desc, &filler, "capture", 'C', JackDriverParamString, &value, NULL, "Input device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "playback", 'P', JackDriverParamString, &value, NULL, "Output device", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "device", 'd', JackDriverParamString, &value, NULL, "OSS device name", NULL);
+
+ value.i = false;
+ jack_driver_descriptor_add_parameter(desc, &filler, "ignorehwbuf", 'b', JackDriverParamBool, &value, NULL, "Ignore hardware period size", NULL);
+
+ value.ui = 0;
+ jack_driver_descriptor_add_parameter(desc, &filler, "input-latency", 'I', JackDriverParamUInt, &value, NULL, "Extra input latency", NULL);
+ jack_driver_descriptor_add_parameter(desc, &filler, "output-latency", 'O', JackDriverParamUInt, &value, NULL, "Extra output latency", NULL);
return desc;
}
diff --git a/solaris/oss/JackOSSDriver.h b/solaris/oss/JackOSSDriver.h
index bedd72b7..c286528a 100644
--- a/solaris/oss/JackOSSDriver.h
+++ b/solaris/oss/JackOSSDriver.h
@@ -28,7 +28,6 @@ namespace Jack
typedef jack_default_audio_sample_t jack_sample_t;
-#define OSS_DRIVER_N_PARAMS 13
#define OSS_DRIVER_DEF_DEV "/dev/dsp"
#define OSS_DRIVER_DEF_FS 48000
#define OSS_DRIVER_DEF_BLKSIZE 1024