diff options
author | Nedko Arnaudov <nedko@arnaudov.name> | 2011-04-22 22:14:31 +0300 |
---|---|---|
committer | Nedko Arnaudov <nedko@arnaudov.name> | 2011-04-22 22:19:13 +0300 |
commit | a9e4628340a0fe4d36cc0e684c71af16a4e3717d (patch) | |
tree | 357220e4a7453dfce66dabd3427b641718ed3eb8 /solaris | |
parent | cfa7575fcc05e8cfb6dee10d94ce6f7b4b79d7ad (diff) | |
download | jack2-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.cpp | 151 | ||||
-rw-r--r-- | solaris/oss/JackBoomerDriver.h | 1 | ||||
-rw-r--r-- | solaris/oss/JackOSSAdapter.cpp | 145 | ||||
-rw-r--r-- | solaris/oss/JackOSSAdapter.h | 1 | ||||
-rw-r--r-- | solaris/oss/JackOSSDriver.cpp | 151 | ||||
-rw-r--r-- | solaris/oss/JackOSSDriver.h | 1 |
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 |