aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2011-01-12 18:14:46 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2011-01-12 18:14:46 +0000
commitca8203e73c1d1f525204089101628bedcf115bff (patch)
tree2c0f666103ed217d0ee30207bd197a237ee0f536
parent5a501b6b47d20996a7548dc635cff75dc4234ffd (diff)
input/output parameters
svn path=/trunk/externals/iem/mediasettings/; revision=14721
-rw-r--r--audiosettings.c61
1 files changed, 56 insertions, 5 deletions
diff --git a/audiosettings.c b/audiosettings.c
index 043586c..709fd8e 100644
--- a/audiosettings.c
+++ b/audiosettings.c
@@ -390,7 +390,6 @@ static int audiosettings_setparams_next(int argc, t_atom*argv) {
static int audiosettings_setparams_rate(t_audiosettings*x, int argc, t_atom*argv) {
if(argc<=0)return 1;
t_int rate=atom_getint(argv);
- post("::rate=%d\t", rate);
if(rate>0)
x->x_params.rate=rate;
return 1;
@@ -403,7 +402,6 @@ static int audiosettings_setparams_advance(t_audiosettings*x, int argc, t_atom*a
if(advance>0)
x->x_params.advance=advance;
- post("::advance=%d", advance);
return 1;
}
@@ -413,17 +411,70 @@ static int audiosettings_setparams_callback(t_audiosettings*x, int argc, t_atom*
t_int callback=atom_getint(argv);
x->x_params.callback=callback;
- post("::callback=%d", callback);
return 1;
}
/* [<device> <channels>]* ... */
static int audiosettings_setparams_input(t_audiosettings*x, int argc, t_atom*argv) {
- return 0;
+ int length=audiosettings_setparams_next(argc, argv);
+ int i;
+ int numpairs=length/2;
+
+ if(length%2)return length;
+
+ if(numpairs>MAXAUDIOINDEV)
+ numpairs=MAXAUDIOINDEV;
+
+ for(i=0; i<numpairs; i++) {
+ int dev=0;
+ int ch=0;
+
+ if(A_FLOAT==argv[2*i+0].a_type) {
+ dev=atom_getint(argv);
+ } else if (A_SYMBOL==argv[2*i+0].a_type) {
+ // LATER: get the device-id from the device-name
+ continue;
+ } else {
+ continue;
+ }
+ ch=atom_getint(argv+2*i+1);
+
+ x->x_params.audioindev[i]=dev;
+ x->x_params.chindev[i]=ch;
+ }
+
+ return length;
}
static int audiosettings_setparams_output(t_audiosettings*x, int argc, t_atom*argv) {
- return 0;
+ int length=audiosettings_setparams_next(argc, argv);
+ int i;
+ int numpairs=length/2;
+
+ if(length%2)return length;
+
+ if(numpairs>MAXAUDIOOUTDEV)
+ numpairs=MAXAUDIOOUTDEV;
+
+ for(i=0; i<numpairs; i++) {
+ int dev=0;
+ int ch=0;
+
+ if(A_FLOAT==argv[2*i+0].a_type) {
+ dev=atom_getint(argv);
+ } else if (A_SYMBOL==argv[2*i+0].a_type) {
+ // LATER: get the device-id from the device-name
+ continue;
+ } else {
+ continue;
+ }
+ ch=atom_getint(argv+2*i+1);
+
+ x->x_params.audiooutdev[i]=dev;
+ x->x_params.choutdev[i]=ch;
+ }
+
+ return length;
}
static void audiosettings_setparams(t_audiosettings *x, t_symbol*s, int argc, t_atom*argv) {