|
1 |
|
2 #define OLD_INTERFACE /* define for pre-Irix 6 interface */ |
|
3 |
|
4 #include "Python.h" |
|
5 #include "stringobject.h" |
|
6 #include <audio.h> |
|
7 #include <stdarg.h> |
|
8 |
|
9 #ifndef AL_NO_ELEM |
|
10 #ifndef OLD_INTERFACE |
|
11 #define OLD_INTERFACE |
|
12 #endif /* OLD_INTERFACE */ |
|
13 #endif /* AL_NO_ELEM */ |
|
14 |
|
15 static PyObject *ErrorObject; |
|
16 |
|
17 /* ----------------------------------------------------- */ |
|
18 |
|
19 /* Declarations for objects of type port */ |
|
20 |
|
21 typedef struct { |
|
22 PyObject_HEAD |
|
23 /* XXXX Add your own stuff here */ |
|
24 ALport port; |
|
25 } alpobject; |
|
26 |
|
27 static PyTypeObject Alptype; |
|
28 |
|
29 |
|
30 |
|
31 /* ---------------------------------------------------------------- */ |
|
32 |
|
33 /* Declarations for objects of type config */ |
|
34 |
|
35 typedef struct { |
|
36 PyObject_HEAD |
|
37 /* XXXX Add your own stuff here */ |
|
38 ALconfig config; |
|
39 } alcobject; |
|
40 |
|
41 static PyTypeObject Alctype; |
|
42 |
|
43 |
|
44 static void |
|
45 ErrorHandler(long code, const char *fmt, ...) |
|
46 { |
|
47 va_list args; |
|
48 char buf[128]; |
|
49 |
|
50 va_start(args, fmt); |
|
51 vsprintf(buf, fmt, args); |
|
52 va_end(args); |
|
53 PyErr_SetString(ErrorObject, buf); |
|
54 } |
|
55 |
|
56 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
57 |
|
58 static PyObject * |
|
59 param2python(int resource, int param, ALvalue value, ALparamInfo *pinfo) |
|
60 { |
|
61 ALparamInfo info; |
|
62 |
|
63 if (pinfo == NULL) { |
|
64 pinfo = &info; |
|
65 if (alGetParamInfo(resource, param, &info) < 0) |
|
66 return NULL; |
|
67 } |
|
68 switch (pinfo->elementType) { |
|
69 case AL_PTR_ELEM: |
|
70 /* XXXX don't know how to handle this */ |
|
71 case AL_NO_ELEM: |
|
72 Py_INCREF(Py_None); |
|
73 return Py_None; |
|
74 case AL_INT32_ELEM: |
|
75 case AL_RESOURCE_ELEM: |
|
76 case AL_ENUM_ELEM: |
|
77 return PyInt_FromLong((long) value.i); |
|
78 case AL_INT64_ELEM: |
|
79 return PyLong_FromLongLong(value.ll); |
|
80 case AL_FIXED_ELEM: |
|
81 return PyFloat_FromDouble(alFixedToDouble(value.ll)); |
|
82 case AL_CHAR_ELEM: |
|
83 if (value.ptr == NULL) { |
|
84 Py_INCREF(Py_None); |
|
85 return Py_None; |
|
86 } |
|
87 return PyString_FromString((char *) value.ptr); |
|
88 default: |
|
89 PyErr_SetString(ErrorObject, "unknown element type"); |
|
90 return NULL; |
|
91 } |
|
92 } |
|
93 |
|
94 static int |
|
95 python2elem(PyObject *item, void *ptr, int elementType) |
|
96 { |
|
97 switch (elementType) { |
|
98 case AL_INT32_ELEM: |
|
99 case AL_RESOURCE_ELEM: |
|
100 case AL_ENUM_ELEM: |
|
101 if (!PyInt_Check(item)) { |
|
102 PyErr_BadArgument(); |
|
103 return -1; |
|
104 } |
|
105 *((int *) ptr) = PyInt_AsLong(item); |
|
106 break; |
|
107 case AL_INT64_ELEM: |
|
108 if (PyInt_Check(item)) |
|
109 *((long long *) ptr) = PyInt_AsLong(item); |
|
110 else if (PyLong_Check(item)) |
|
111 *((long long *) ptr) = PyLong_AsLongLong(item); |
|
112 else { |
|
113 PyErr_BadArgument(); |
|
114 return -1; |
|
115 } |
|
116 break; |
|
117 case AL_FIXED_ELEM: |
|
118 if (PyInt_Check(item)) |
|
119 *((long long *) ptr) = alDoubleToFixed((double) PyInt_AsLong(item)); |
|
120 else if (PyFloat_Check(item)) |
|
121 *((long long *) ptr) = alDoubleToFixed(PyFloat_AsDouble(item)); |
|
122 else { |
|
123 PyErr_BadArgument(); |
|
124 return -1; |
|
125 } |
|
126 break; |
|
127 default: |
|
128 PyErr_SetString(ErrorObject, "unknown element type"); |
|
129 return -1; |
|
130 } |
|
131 return 0; |
|
132 } |
|
133 |
|
134 static int |
|
135 python2param(int resource, ALpv *param, PyObject *value, ALparamInfo *pinfo) |
|
136 { |
|
137 ALparamInfo info; |
|
138 int i, stepsize; |
|
139 PyObject *item; |
|
140 |
|
141 if (pinfo == NULL) { |
|
142 pinfo = &info; |
|
143 if (alGetParamInfo(resource, param->param, &info) < 0) |
|
144 return -1; |
|
145 } |
|
146 switch (pinfo->valueType) { |
|
147 case AL_STRING_VAL: |
|
148 if (pinfo->elementType != AL_CHAR_ELEM) { |
|
149 PyErr_SetString(ErrorObject, "unknown element type"); |
|
150 return -1; |
|
151 } |
|
152 if (!PyString_Check(value)) { |
|
153 PyErr_BadArgument(); |
|
154 return -1; |
|
155 } |
|
156 param->value.ptr = PyString_AS_STRING(value); |
|
157 param->sizeIn = PyString_GET_SIZE(value)+1; /*account for NUL*/ |
|
158 break; |
|
159 case AL_SET_VAL: |
|
160 case AL_VECTOR_VAL: |
|
161 if (!PyList_Check(value) && !PyTuple_Check(value)) { |
|
162 PyErr_BadArgument(); |
|
163 return -1; |
|
164 } |
|
165 switch (pinfo->elementType) { |
|
166 case AL_INT32_ELEM: |
|
167 case AL_RESOURCE_ELEM: |
|
168 case AL_ENUM_ELEM: |
|
169 param->sizeIn = PySequence_Size(value); |
|
170 param->value.ptr = PyMem_NEW(int, param->sizeIn); |
|
171 stepsize = sizeof(int); |
|
172 break; |
|
173 case AL_INT64_ELEM: |
|
174 case AL_FIXED_ELEM: |
|
175 param->sizeIn = PySequence_Size(value); |
|
176 param->value.ptr = PyMem_NEW(long long, param->sizeIn); |
|
177 stepsize = sizeof(long long); |
|
178 break; |
|
179 } |
|
180 for (i = 0; i < param->sizeIn; i++) { |
|
181 item = PySequence_GetItem(value, i); |
|
182 if (python2elem(item, (void *) ((char *) param->value.ptr + i*stepsize), pinfo->elementType) < 0) { |
|
183 PyMem_DEL(param->value.ptr); |
|
184 return -1; |
|
185 } |
|
186 } |
|
187 break; |
|
188 case AL_SCALAR_VAL: |
|
189 switch (pinfo->elementType) { |
|
190 case AL_INT32_ELEM: |
|
191 case AL_RESOURCE_ELEM: |
|
192 case AL_ENUM_ELEM: |
|
193 return python2elem(value, (void *) ¶m->value.i, |
|
194 pinfo->elementType); |
|
195 case AL_INT64_ELEM: |
|
196 case AL_FIXED_ELEM: |
|
197 return python2elem(value, (void *) ¶m->value.ll, |
|
198 pinfo->elementType); |
|
199 default: |
|
200 PyErr_SetString(ErrorObject, "unknown element type"); |
|
201 return -1; |
|
202 } |
|
203 } |
|
204 return 0; |
|
205 } |
|
206 |
|
207 static int |
|
208 python2params(int resource1, int resource2, PyObject *list, ALpv **pvsp, ALparamInfo **pinfop) |
|
209 { |
|
210 PyObject *item; |
|
211 ALpv *pvs; |
|
212 ALparamInfo *pinfo; |
|
213 int npvs, i; |
|
214 |
|
215 npvs = PyList_Size(list); |
|
216 pvs = PyMem_NEW(ALpv, npvs); |
|
217 pinfo = PyMem_NEW(ALparamInfo, npvs); |
|
218 for (i = 0; i < npvs; i++) { |
|
219 item = PyList_GetItem(list, i); |
|
220 if (!PyArg_ParseTuple(item, "iO", &pvs[i].param, &item)) |
|
221 goto error; |
|
222 if (alGetParamInfo(resource1, pvs[i].param, &pinfo[i]) < 0 && |
|
223 alGetParamInfo(resource2, pvs[i].param, &pinfo[i]) < 0) |
|
224 goto error; |
|
225 if (python2param(resource1, &pvs[i], item, &pinfo[i]) < 0) |
|
226 goto error; |
|
227 } |
|
228 |
|
229 *pvsp = pvs; |
|
230 *pinfop = pinfo; |
|
231 return npvs; |
|
232 |
|
233 error: |
|
234 /* XXXX we should clean up everything */ |
|
235 if (pvs) |
|
236 PyMem_DEL(pvs); |
|
237 if (pinfo) |
|
238 PyMem_DEL(pinfo); |
|
239 return -1; |
|
240 } |
|
241 |
|
242 /* -------------------------------------------------------- */ |
|
243 |
|
244 |
|
245 static PyObject * |
|
246 SetConfig(alcobject *self, PyObject *args, int (*func)(ALconfig, int)) |
|
247 { |
|
248 int par; |
|
249 |
|
250 if (!PyArg_ParseTuple(args, "i:SetConfig", &par)) |
|
251 return NULL; |
|
252 |
|
253 if ((*func)(self->config, par) == -1) |
|
254 return NULL; |
|
255 |
|
256 Py_INCREF(Py_None); |
|
257 return Py_None; |
|
258 } |
|
259 |
|
260 static PyObject * |
|
261 GetConfig(alcobject *self, PyObject *args, int (*func)(ALconfig)) |
|
262 { |
|
263 int par; |
|
264 |
|
265 if (!PyArg_ParseTuple(args, ":GetConfig")) |
|
266 return NULL; |
|
267 |
|
268 if ((par = (*func)(self->config)) == -1) |
|
269 return NULL; |
|
270 |
|
271 return PyInt_FromLong((long) par); |
|
272 } |
|
273 |
|
274 PyDoc_STRVAR(alc_SetWidth__doc__, |
|
275 "alSetWidth: set the wordsize for integer audio data."); |
|
276 |
|
277 static PyObject * |
|
278 alc_SetWidth(alcobject *self, PyObject *args) |
|
279 { |
|
280 return SetConfig(self, args, alSetWidth); |
|
281 } |
|
282 |
|
283 |
|
284 PyDoc_STRVAR(alc_GetWidth__doc__, |
|
285 "alGetWidth: get the wordsize for integer audio data."); |
|
286 |
|
287 static PyObject * |
|
288 alc_GetWidth(alcobject *self, PyObject *args) |
|
289 { |
|
290 return GetConfig(self, args, alGetWidth); |
|
291 } |
|
292 |
|
293 |
|
294 PyDoc_STRVAR(alc_SetSampFmt__doc__, |
|
295 "alSetSampFmt: set the sample format setting in an audio ALconfig " |
|
296 "structure."); |
|
297 |
|
298 static PyObject * |
|
299 alc_SetSampFmt(alcobject *self, PyObject *args) |
|
300 { |
|
301 return SetConfig(self, args, alSetSampFmt); |
|
302 } |
|
303 |
|
304 |
|
305 PyDoc_STRVAR(alc_GetSampFmt__doc__, |
|
306 "alGetSampFmt: get the sample format setting in an audio ALconfig " |
|
307 "structure."); |
|
308 |
|
309 static PyObject * |
|
310 alc_GetSampFmt(alcobject *self, PyObject *args) |
|
311 { |
|
312 return GetConfig(self, args, alGetSampFmt); |
|
313 } |
|
314 |
|
315 |
|
316 PyDoc_STRVAR(alc_SetChannels__doc__, |
|
317 "alSetChannels: set the channel settings in an audio ALconfig."); |
|
318 |
|
319 static PyObject * |
|
320 alc_SetChannels(alcobject *self, PyObject *args) |
|
321 { |
|
322 return SetConfig(self, args, alSetChannels); |
|
323 } |
|
324 |
|
325 |
|
326 PyDoc_STRVAR(alc_GetChannels__doc__, |
|
327 "alGetChannels: get the channel settings in an audio ALconfig."); |
|
328 |
|
329 static PyObject * |
|
330 alc_GetChannels(alcobject *self, PyObject *args) |
|
331 { |
|
332 return GetConfig(self, args, alGetChannels); |
|
333 } |
|
334 |
|
335 |
|
336 PyDoc_STRVAR(alc_SetFloatMax__doc__, |
|
337 "alSetFloatMax: set the maximum value of floating point sample data."); |
|
338 |
|
339 static PyObject * |
|
340 alc_SetFloatMax(alcobject *self, PyObject *args) |
|
341 { |
|
342 double maximum_value; |
|
343 |
|
344 if (!PyArg_ParseTuple(args, "d:SetFloatMax", &maximum_value)) |
|
345 return NULL; |
|
346 if (alSetFloatMax(self->config, maximum_value) < 0) |
|
347 return NULL; |
|
348 Py_INCREF(Py_None); |
|
349 return Py_None; |
|
350 } |
|
351 |
|
352 |
|
353 PyDoc_STRVAR(alc_GetFloatMax__doc__, |
|
354 "alGetFloatMax: get the maximum value of floating point sample data."); |
|
355 |
|
356 static PyObject * |
|
357 alc_GetFloatMax(alcobject *self, PyObject *args) |
|
358 { |
|
359 double maximum_value; |
|
360 |
|
361 if (!PyArg_ParseTuple(args, ":GetFloatMax")) |
|
362 return NULL; |
|
363 if ((maximum_value = alGetFloatMax(self->config)) == 0) |
|
364 return NULL; |
|
365 return PyFloat_FromDouble(maximum_value); |
|
366 } |
|
367 |
|
368 |
|
369 PyDoc_STRVAR(alc_SetDevice__doc__, |
|
370 "alSetDevice: set the device setting in an audio ALconfig structure."); |
|
371 |
|
372 static PyObject * |
|
373 alc_SetDevice(alcobject *self, PyObject *args) |
|
374 { |
|
375 return SetConfig(self, args, alSetDevice); |
|
376 } |
|
377 |
|
378 |
|
379 PyDoc_STRVAR(alc_GetDevice__doc__, |
|
380 "alGetDevice: get the device setting in an audio ALconfig structure."); |
|
381 |
|
382 static PyObject * |
|
383 alc_GetDevice(alcobject *self, PyObject *args) |
|
384 { |
|
385 return GetConfig(self, args, alGetDevice); |
|
386 } |
|
387 |
|
388 |
|
389 PyDoc_STRVAR(alc_SetQueueSize__doc__, |
|
390 "alSetQueueSize: set audio port buffer size."); |
|
391 |
|
392 static PyObject * |
|
393 alc_SetQueueSize(alcobject *self, PyObject *args) |
|
394 { |
|
395 return SetConfig(self, args, alSetQueueSize); |
|
396 } |
|
397 |
|
398 |
|
399 PyDoc_STRVAR(alc_GetQueueSize__doc__, |
|
400 "alGetQueueSize: get audio port buffer size."); |
|
401 |
|
402 static PyObject * |
|
403 alc_GetQueueSize(alcobject *self, PyObject *args) |
|
404 { |
|
405 return GetConfig(self, args, alGetQueueSize); |
|
406 } |
|
407 |
|
408 #endif /* AL_NO_ELEM */ |
|
409 |
|
410 static PyObject * |
|
411 setconfig(alcobject *self, PyObject *args, int (*func)(ALconfig, long)) |
|
412 { |
|
413 long par; |
|
414 |
|
415 if (!PyArg_ParseTuple(args, "l:SetConfig", &par)) |
|
416 return NULL; |
|
417 |
|
418 if ((*func)(self->config, par) == -1) |
|
419 return NULL; |
|
420 |
|
421 Py_INCREF(Py_None); |
|
422 return Py_None; |
|
423 } |
|
424 |
|
425 static PyObject * |
|
426 getconfig(alcobject *self, PyObject *args, long (*func)(ALconfig)) |
|
427 { |
|
428 long par; |
|
429 |
|
430 if (!PyArg_ParseTuple(args, ":GetConfig")) |
|
431 return NULL; |
|
432 |
|
433 if ((par = (*func)(self->config)) == -1) |
|
434 return NULL; |
|
435 |
|
436 return PyInt_FromLong((long) par); |
|
437 } |
|
438 |
|
439 static PyObject * |
|
440 alc_setqueuesize (alcobject *self, PyObject *args) |
|
441 { |
|
442 return setconfig(self, args, ALsetqueuesize); |
|
443 } |
|
444 |
|
445 static PyObject * |
|
446 alc_getqueuesize (alcobject *self, PyObject *args) |
|
447 { |
|
448 return getconfig(self, args, ALgetqueuesize); |
|
449 } |
|
450 |
|
451 static PyObject * |
|
452 alc_setwidth (alcobject *self, PyObject *args) |
|
453 { |
|
454 return setconfig(self, args, ALsetwidth); |
|
455 } |
|
456 |
|
457 static PyObject * |
|
458 alc_getwidth (alcobject *self, PyObject *args) |
|
459 { |
|
460 return getconfig(self, args, ALgetwidth); |
|
461 } |
|
462 |
|
463 static PyObject * |
|
464 alc_getchannels (alcobject *self, PyObject *args) |
|
465 { |
|
466 return getconfig(self, args, ALgetchannels); |
|
467 } |
|
468 |
|
469 static PyObject * |
|
470 alc_setchannels (alcobject *self, PyObject *args) |
|
471 { |
|
472 return setconfig(self, args, ALsetchannels); |
|
473 } |
|
474 |
|
475 #ifdef AL_405 |
|
476 |
|
477 static PyObject * |
|
478 alc_getsampfmt (alcobject *self, PyObject *args) |
|
479 { |
|
480 return getconfig(self, args, ALgetsampfmt); |
|
481 } |
|
482 |
|
483 static PyObject * |
|
484 alc_setsampfmt (alcobject *self, PyObject *args) |
|
485 { |
|
486 return setconfig(self, args, ALsetsampfmt); |
|
487 } |
|
488 |
|
489 static PyObject * |
|
490 alc_getfloatmax(alcobject *self, PyObject *args) |
|
491 { |
|
492 double arg; |
|
493 |
|
494 if (!PyArg_ParseTuple(args, ":GetFloatMax")) |
|
495 return 0; |
|
496 if ((arg = ALgetfloatmax(self->config)) == 0) |
|
497 return NULL; |
|
498 return PyFloat_FromDouble(arg); |
|
499 } |
|
500 |
|
501 static PyObject * |
|
502 alc_setfloatmax(alcobject *self, PyObject *args) |
|
503 { |
|
504 double arg; |
|
505 |
|
506 if (!PyArg_ParseTuple(args, "d:SetFloatMax", &arg)) |
|
507 return 0; |
|
508 if (ALsetfloatmax(self->config, arg) == -1) |
|
509 return NULL; |
|
510 Py_INCREF(Py_None); |
|
511 return Py_None; |
|
512 } |
|
513 #endif /* AL_405 */ |
|
514 |
|
515 static struct PyMethodDef alc_methods[] = { |
|
516 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
517 {"SetWidth", (PyCFunction)alc_SetWidth, METH_VARARGS, alc_SetWidth__doc__}, |
|
518 {"GetWidth", (PyCFunction)alc_GetWidth, METH_VARARGS, alc_GetWidth__doc__}, |
|
519 {"SetSampFmt", (PyCFunction)alc_SetSampFmt, METH_VARARGS, alc_SetSampFmt__doc__}, |
|
520 {"GetSampFmt", (PyCFunction)alc_GetSampFmt, METH_VARARGS, alc_GetSampFmt__doc__}, |
|
521 {"SetChannels", (PyCFunction)alc_SetChannels, METH_VARARGS, alc_SetChannels__doc__}, |
|
522 {"GetChannels", (PyCFunction)alc_GetChannels, METH_VARARGS, alc_GetChannels__doc__}, |
|
523 {"SetFloatMax", (PyCFunction)alc_SetFloatMax, METH_VARARGS, alc_SetFloatMax__doc__}, |
|
524 {"GetFloatMax", (PyCFunction)alc_GetFloatMax, METH_VARARGS, alc_GetFloatMax__doc__}, |
|
525 {"SetDevice", (PyCFunction)alc_SetDevice, METH_VARARGS, alc_SetDevice__doc__}, |
|
526 {"GetDevice", (PyCFunction)alc_GetDevice, METH_VARARGS, alc_GetDevice__doc__}, |
|
527 {"SetQueueSize", (PyCFunction)alc_SetQueueSize, METH_VARARGS, alc_SetQueueSize__doc__}, |
|
528 {"GetQueueSize", (PyCFunction)alc_GetQueueSize, METH_VARARGS, alc_GetQueueSize__doc__}, |
|
529 #endif /* AL_NO_ELEM */ |
|
530 {"getqueuesize", (PyCFunction)alc_getqueuesize, METH_VARARGS}, |
|
531 {"setqueuesize", (PyCFunction)alc_setqueuesize, METH_VARARGS}, |
|
532 {"getwidth", (PyCFunction)alc_getwidth, METH_VARARGS}, |
|
533 {"setwidth", (PyCFunction)alc_setwidth, METH_VARARGS}, |
|
534 {"getchannels", (PyCFunction)alc_getchannels, METH_VARARGS}, |
|
535 {"setchannels", (PyCFunction)alc_setchannels, METH_VARARGS}, |
|
536 #ifdef AL_405 |
|
537 {"getsampfmt", (PyCFunction)alc_getsampfmt, METH_VARARGS}, |
|
538 {"setsampfmt", (PyCFunction)alc_setsampfmt, METH_VARARGS}, |
|
539 {"getfloatmax", (PyCFunction)alc_getfloatmax, METH_VARARGS}, |
|
540 {"setfloatmax", (PyCFunction)alc_setfloatmax, METH_VARARGS}, |
|
541 #endif /* AL_405 */ |
|
542 |
|
543 {NULL, NULL} /* sentinel */ |
|
544 }; |
|
545 |
|
546 /* ---------- */ |
|
547 |
|
548 |
|
549 static PyObject * |
|
550 newalcobject(ALconfig config) |
|
551 { |
|
552 alcobject *self; |
|
553 |
|
554 self = PyObject_New(alcobject, &Alctype); |
|
555 if (self == NULL) |
|
556 return NULL; |
|
557 /* XXXX Add your own initializers here */ |
|
558 self->config = config; |
|
559 return (PyObject *) self; |
|
560 } |
|
561 |
|
562 |
|
563 static void |
|
564 alc_dealloc(alcobject *self) |
|
565 { |
|
566 /* XXXX Add your own cleanup code here */ |
|
567 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
568 (void) alFreeConfig(self->config); /* ignore errors */ |
|
569 #else |
|
570 (void) ALfreeconfig(self->config); /* ignore errors */ |
|
571 #endif |
|
572 PyObject_Del(self); |
|
573 } |
|
574 |
|
575 static PyObject * |
|
576 alc_getattr(alcobject *self, char *name) |
|
577 { |
|
578 /* XXXX Add your own getattr code here */ |
|
579 return Py_FindMethod(alc_methods, (PyObject *)self, name); |
|
580 } |
|
581 |
|
582 PyDoc_STRVAR(Alctype__doc__, ""); |
|
583 |
|
584 static PyTypeObject Alctype = { |
|
585 PyObject_HEAD_INIT(&PyType_Type) |
|
586 0, /*ob_size*/ |
|
587 "al.config", /*tp_name*/ |
|
588 sizeof(alcobject), /*tp_basicsize*/ |
|
589 0, /*tp_itemsize*/ |
|
590 /* methods */ |
|
591 (destructor)alc_dealloc, /*tp_dealloc*/ |
|
592 (printfunc)0, /*tp_print*/ |
|
593 (getattrfunc)alc_getattr, /*tp_getattr*/ |
|
594 (setattrfunc)0, /*tp_setattr*/ |
|
595 (cmpfunc)0, /*tp_compare*/ |
|
596 (reprfunc)0, /*tp_repr*/ |
|
597 0, /*tp_as_number*/ |
|
598 0, /*tp_as_sequence*/ |
|
599 0, /*tp_as_mapping*/ |
|
600 (hashfunc)0, /*tp_hash*/ |
|
601 (ternaryfunc)0, /*tp_call*/ |
|
602 (reprfunc)0, /*tp_str*/ |
|
603 |
|
604 /* Space for future expansion */ |
|
605 0L,0L,0L,0L, |
|
606 Alctype__doc__ /* Documentation string */ |
|
607 }; |
|
608 |
|
609 /* End of code for config objects */ |
|
610 /* ---------------------------------------------------------------- */ |
|
611 |
|
612 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
613 |
|
614 PyDoc_STRVAR(alp_SetConfig__doc__, |
|
615 "alSetConfig: set the ALconfig of an audio ALport."); |
|
616 |
|
617 static PyObject * |
|
618 alp_SetConfig(alpobject *self, PyObject *args) |
|
619 { |
|
620 alcobject *config; |
|
621 if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config)) |
|
622 return NULL; |
|
623 if (alSetConfig(self->port, config->config) < 0) |
|
624 return NULL; |
|
625 Py_INCREF(Py_None); |
|
626 return Py_None; |
|
627 } |
|
628 |
|
629 |
|
630 PyDoc_STRVAR(alp_GetConfig__doc__, |
|
631 "alGetConfig: get the ALconfig of an audio ALport."); |
|
632 |
|
633 static PyObject * |
|
634 alp_GetConfig(alpobject *self, PyObject *args) |
|
635 { |
|
636 ALconfig config; |
|
637 if (!PyArg_ParseTuple(args, ":GetConfig")) |
|
638 return NULL; |
|
639 if ((config = alGetConfig(self->port)) == NULL) |
|
640 return NULL; |
|
641 return newalcobject(config); |
|
642 } |
|
643 |
|
644 |
|
645 PyDoc_STRVAR(alp_GetResource__doc__, |
|
646 "alGetResource: get the resource associated with an audio port."); |
|
647 |
|
648 static PyObject * |
|
649 alp_GetResource(alpobject *self, PyObject *args) |
|
650 { |
|
651 int resource; |
|
652 |
|
653 if (!PyArg_ParseTuple(args, ":GetResource")) |
|
654 return NULL; |
|
655 if ((resource = alGetResource(self->port)) == 0) |
|
656 return NULL; |
|
657 return PyInt_FromLong((long) resource); |
|
658 } |
|
659 |
|
660 |
|
661 PyDoc_STRVAR(alp_GetFD__doc__, |
|
662 "alGetFD: get the file descriptor for an audio port."); |
|
663 |
|
664 static PyObject * |
|
665 alp_GetFD(alpobject *self, PyObject *args) |
|
666 { |
|
667 int fd; |
|
668 |
|
669 if (!PyArg_ParseTuple(args, ":GetFD")) |
|
670 return NULL; |
|
671 |
|
672 if ((fd = alGetFD(self->port)) < 0) |
|
673 return NULL; |
|
674 |
|
675 return PyInt_FromLong((long) fd); |
|
676 } |
|
677 |
|
678 |
|
679 PyDoc_STRVAR(alp_GetFilled__doc__, |
|
680 "alGetFilled: return the number of filled sample frames in " |
|
681 "an audio port."); |
|
682 |
|
683 static PyObject * |
|
684 alp_GetFilled(alpobject *self, PyObject *args) |
|
685 { |
|
686 int filled; |
|
687 |
|
688 if (!PyArg_ParseTuple(args, ":GetFilled")) |
|
689 return NULL; |
|
690 if ((filled = alGetFilled(self->port)) < 0) |
|
691 return NULL; |
|
692 return PyInt_FromLong((long) filled); |
|
693 } |
|
694 |
|
695 |
|
696 PyDoc_STRVAR(alp_GetFillable__doc__, |
|
697 "alGetFillable: report the number of unfilled sample frames " |
|
698 "in an audio port."); |
|
699 |
|
700 static PyObject * |
|
701 alp_GetFillable(alpobject *self, PyObject *args) |
|
702 { |
|
703 int fillable; |
|
704 |
|
705 if (!PyArg_ParseTuple(args, ":GetFillable")) |
|
706 return NULL; |
|
707 if ((fillable = alGetFillable(self->port)) < 0) |
|
708 return NULL; |
|
709 return PyInt_FromLong((long) fillable); |
|
710 } |
|
711 |
|
712 |
|
713 PyDoc_STRVAR(alp_ReadFrames__doc__, |
|
714 "alReadFrames: read sample frames from an audio port."); |
|
715 |
|
716 static PyObject * |
|
717 alp_ReadFrames(alpobject *self, PyObject *args) |
|
718 { |
|
719 int framecount; |
|
720 PyObject *v; |
|
721 int size; |
|
722 int ch; |
|
723 ALconfig c; |
|
724 |
|
725 if (!PyArg_ParseTuple(args, "i:ReadFrames", &framecount)) |
|
726 return NULL; |
|
727 if (framecount < 0) { |
|
728 PyErr_SetString(ErrorObject, "negative framecount"); |
|
729 return NULL; |
|
730 } |
|
731 c = alGetConfig(self->port); |
|
732 switch (alGetSampFmt(c)) { |
|
733 case AL_SAMPFMT_TWOSCOMP: |
|
734 switch (alGetWidth(c)) { |
|
735 case AL_SAMPLE_8: |
|
736 size = 1; |
|
737 break; |
|
738 case AL_SAMPLE_16: |
|
739 size = 2; |
|
740 break; |
|
741 case AL_SAMPLE_24: |
|
742 size = 4; |
|
743 break; |
|
744 default: |
|
745 PyErr_SetString(ErrorObject, "can't determine width"); |
|
746 alFreeConfig(c); |
|
747 return NULL; |
|
748 } |
|
749 break; |
|
750 case AL_SAMPFMT_FLOAT: |
|
751 size = 4; |
|
752 break; |
|
753 case AL_SAMPFMT_DOUBLE: |
|
754 size = 8; |
|
755 break; |
|
756 default: |
|
757 PyErr_SetString(ErrorObject, "can't determine format"); |
|
758 alFreeConfig(c); |
|
759 return NULL; |
|
760 } |
|
761 ch = alGetChannels(c); |
|
762 alFreeConfig(c); |
|
763 if (ch < 0) { |
|
764 PyErr_SetString(ErrorObject, "can't determine # of channels"); |
|
765 return NULL; |
|
766 } |
|
767 size *= ch; |
|
768 v = PyString_FromStringAndSize((char *) NULL, size * framecount); |
|
769 if (v == NULL) |
|
770 return NULL; |
|
771 |
|
772 Py_BEGIN_ALLOW_THREADS |
|
773 alReadFrames(self->port, (void *) PyString_AS_STRING(v), framecount); |
|
774 Py_END_ALLOW_THREADS |
|
775 |
|
776 return v; |
|
777 } |
|
778 |
|
779 |
|
780 PyDoc_STRVAR(alp_DiscardFrames__doc__, |
|
781 "alDiscardFrames: discard audio from an audio port."); |
|
782 |
|
783 static PyObject * |
|
784 alp_DiscardFrames(alpobject *self, PyObject *args) |
|
785 { |
|
786 int framecount; |
|
787 |
|
788 if (!PyArg_ParseTuple(args, "i:DiscardFrames", &framecount)) |
|
789 return NULL; |
|
790 |
|
791 Py_BEGIN_ALLOW_THREADS |
|
792 framecount = alDiscardFrames(self->port, framecount); |
|
793 Py_END_ALLOW_THREADS |
|
794 |
|
795 if (framecount < 0) |
|
796 return NULL; |
|
797 |
|
798 return PyInt_FromLong((long) framecount); |
|
799 } |
|
800 |
|
801 |
|
802 PyDoc_STRVAR(alp_ZeroFrames__doc__, |
|
803 "alZeroFrames: write zero-valued sample frames to an audio port."); |
|
804 |
|
805 static PyObject * |
|
806 alp_ZeroFrames(alpobject *self, PyObject *args) |
|
807 { |
|
808 int framecount; |
|
809 |
|
810 if (!PyArg_ParseTuple(args, "i:ZeroFrames", &framecount)) |
|
811 return NULL; |
|
812 |
|
813 if (framecount < 0) { |
|
814 PyErr_SetString(ErrorObject, "negative framecount"); |
|
815 return NULL; |
|
816 } |
|
817 |
|
818 Py_BEGIN_ALLOW_THREADS |
|
819 alZeroFrames(self->port, framecount); |
|
820 Py_END_ALLOW_THREADS |
|
821 |
|
822 Py_INCREF(Py_None); |
|
823 return Py_None; |
|
824 } |
|
825 |
|
826 |
|
827 PyDoc_STRVAR(alp_SetFillPoint__doc__, |
|
828 "alSetFillPoint: set low- or high-water mark for an audio port."); |
|
829 |
|
830 static PyObject * |
|
831 alp_SetFillPoint(alpobject *self, PyObject *args) |
|
832 { |
|
833 int fillpoint; |
|
834 |
|
835 if (!PyArg_ParseTuple(args, "i:SetFillPoint", &fillpoint)) |
|
836 return NULL; |
|
837 |
|
838 if (alSetFillPoint(self->port, fillpoint) < 0) |
|
839 return NULL; |
|
840 |
|
841 Py_INCREF(Py_None); |
|
842 return Py_None; |
|
843 } |
|
844 |
|
845 |
|
846 PyDoc_STRVAR(alp_GetFillPoint__doc__, |
|
847 "alGetFillPoint: get low- or high-water mark for an audio port."); |
|
848 |
|
849 static PyObject * |
|
850 alp_GetFillPoint(alpobject *self, PyObject *args) |
|
851 { |
|
852 int fillpoint; |
|
853 |
|
854 if (!PyArg_ParseTuple(args, ":GetFillPoint")) |
|
855 return NULL; |
|
856 |
|
857 if ((fillpoint = alGetFillPoint(self->port)) < 0) |
|
858 return NULL; |
|
859 |
|
860 return PyInt_FromLong((long) fillpoint); |
|
861 } |
|
862 |
|
863 |
|
864 PyDoc_STRVAR(alp_GetFrameNumber__doc__, |
|
865 "alGetFrameNumber: get the absolute sample frame number " |
|
866 "associated with a port."); |
|
867 |
|
868 static PyObject * |
|
869 alp_GetFrameNumber(alpobject *self, PyObject *args) |
|
870 { |
|
871 stamp_t fnum; |
|
872 |
|
873 if (!PyArg_ParseTuple(args, ":GetFrameNumber")) |
|
874 return NULL; |
|
875 |
|
876 if (alGetFrameNumber(self->port, &fnum) < 0) |
|
877 return NULL; |
|
878 |
|
879 return PyLong_FromLongLong((long long) fnum); |
|
880 } |
|
881 |
|
882 |
|
883 PyDoc_STRVAR(alp_GetFrameTime__doc__, |
|
884 "alGetFrameTime: get the time at which a sample frame came " |
|
885 "in or will go out."); |
|
886 |
|
887 static PyObject * |
|
888 alp_GetFrameTime(alpobject *self, PyObject *args) |
|
889 { |
|
890 stamp_t fnum, time; |
|
891 PyObject *ret, *v0, *v1; |
|
892 |
|
893 if (!PyArg_ParseTuple(args, ":GetFrameTime")) |
|
894 return NULL; |
|
895 if (alGetFrameTime(self->port, &fnum, &time) < 0) |
|
896 return NULL; |
|
897 v0 = PyLong_FromLongLong((long long) fnum); |
|
898 v1 = PyLong_FromLongLong((long long) time); |
|
899 if (PyErr_Occurred()) { |
|
900 Py_XDECREF(v0); |
|
901 Py_XDECREF(v1); |
|
902 return NULL; |
|
903 } |
|
904 ret = PyTuple_Pack(2, v0, v1); |
|
905 Py_DECREF(v0); |
|
906 Py_DECREF(v1); |
|
907 return ret; |
|
908 } |
|
909 |
|
910 |
|
911 PyDoc_STRVAR(alp_WriteFrames__doc__, |
|
912 "alWriteFrames: write sample frames to an audio port."); |
|
913 |
|
914 static PyObject * |
|
915 alp_WriteFrames(alpobject *self, PyObject *args) |
|
916 { |
|
917 char *samples; |
|
918 int length; |
|
919 int size, ch; |
|
920 ALconfig c; |
|
921 |
|
922 if (!PyArg_ParseTuple(args, "s#:WriteFrames", &samples, &length)) |
|
923 return NULL; |
|
924 c = alGetConfig(self->port); |
|
925 switch (alGetSampFmt(c)) { |
|
926 case AL_SAMPFMT_TWOSCOMP: |
|
927 switch (alGetWidth(c)) { |
|
928 case AL_SAMPLE_8: |
|
929 size = 1; |
|
930 break; |
|
931 case AL_SAMPLE_16: |
|
932 size = 2; |
|
933 break; |
|
934 case AL_SAMPLE_24: |
|
935 size = 4; |
|
936 break; |
|
937 default: |
|
938 PyErr_SetString(ErrorObject, "can't determine width"); |
|
939 alFreeConfig(c); |
|
940 return NULL; |
|
941 } |
|
942 break; |
|
943 case AL_SAMPFMT_FLOAT: |
|
944 size = 4; |
|
945 break; |
|
946 case AL_SAMPFMT_DOUBLE: |
|
947 size = 8; |
|
948 break; |
|
949 default: |
|
950 PyErr_SetString(ErrorObject, "can't determine format"); |
|
951 alFreeConfig(c); |
|
952 return NULL; |
|
953 } |
|
954 ch = alGetChannels(c); |
|
955 alFreeConfig(c); |
|
956 if (ch < 0) { |
|
957 PyErr_SetString(ErrorObject, "can't determine # of channels"); |
|
958 return NULL; |
|
959 } |
|
960 size *= ch; |
|
961 if (length % size != 0) { |
|
962 PyErr_SetString(ErrorObject, |
|
963 "buffer length not whole number of frames"); |
|
964 return NULL; |
|
965 } |
|
966 |
|
967 Py_BEGIN_ALLOW_THREADS |
|
968 alWriteFrames(self->port, (void *) samples, length / size); |
|
969 Py_END_ALLOW_THREADS |
|
970 |
|
971 Py_INCREF(Py_None); |
|
972 return Py_None; |
|
973 } |
|
974 |
|
975 |
|
976 PyDoc_STRVAR(alp_ClosePort__doc__, "alClosePort: close an audio port."); |
|
977 |
|
978 static PyObject * |
|
979 alp_ClosePort(alpobject *self, PyObject *args) |
|
980 { |
|
981 if (!PyArg_ParseTuple(args, ":ClosePort")) |
|
982 return NULL; |
|
983 if (alClosePort(self->port) < 0) |
|
984 return NULL; |
|
985 self->port = NULL; |
|
986 Py_INCREF(Py_None); |
|
987 return Py_None; |
|
988 } |
|
989 |
|
990 #endif /* AL_NO_ELEM */ |
|
991 |
|
992 #ifdef OLD_INTERFACE |
|
993 static PyObject * |
|
994 alp_closeport(alpobject *self, PyObject *args) |
|
995 { |
|
996 if (!PyArg_ParseTuple(args, ":ClosePort")) |
|
997 return NULL; |
|
998 if (ALcloseport(self->port) < 0) |
|
999 return NULL; |
|
1000 self->port = NULL; |
|
1001 Py_INCREF(Py_None); |
|
1002 return Py_None; |
|
1003 } |
|
1004 |
|
1005 static PyObject * |
|
1006 alp_getfd(alpobject *self, PyObject *args) |
|
1007 { |
|
1008 int fd; |
|
1009 |
|
1010 if (!PyArg_ParseTuple(args, ":GetFD")) |
|
1011 return NULL; |
|
1012 if ((fd = ALgetfd(self-> port)) == -1) |
|
1013 return NULL; |
|
1014 return PyInt_FromLong(fd); |
|
1015 } |
|
1016 |
|
1017 static PyObject * |
|
1018 alp_getfilled(alpobject *self, PyObject *args) |
|
1019 { |
|
1020 long count; |
|
1021 |
|
1022 if (!PyArg_ParseTuple(args, ":GetFilled")) |
|
1023 return NULL; |
|
1024 if ((count = ALgetfilled(self-> port)) == -1) |
|
1025 return NULL; |
|
1026 return PyInt_FromLong(count); |
|
1027 } |
|
1028 |
|
1029 static PyObject * |
|
1030 alp_getfillable(alpobject *self, PyObject *args) |
|
1031 { |
|
1032 long count; |
|
1033 |
|
1034 if (!PyArg_ParseTuple(args, ":GetFillable")) |
|
1035 return NULL; |
|
1036 if ((count = ALgetfillable(self-> port)) == -1) |
|
1037 return NULL; |
|
1038 return PyInt_FromLong (count); |
|
1039 } |
|
1040 |
|
1041 static PyObject * |
|
1042 alp_readsamps(alpobject *self, PyObject *args) |
|
1043 { |
|
1044 long count; |
|
1045 PyObject *v; |
|
1046 ALconfig c; |
|
1047 int width; |
|
1048 int ret; |
|
1049 |
|
1050 if (!PyArg_ParseTuple(args, "l:readsamps", &count)) |
|
1051 return NULL; |
|
1052 |
|
1053 if (count <= 0) { |
|
1054 PyErr_SetString(ErrorObject, "al.readsamps : arg <= 0"); |
|
1055 return NULL; |
|
1056 } |
|
1057 |
|
1058 c = ALgetconfig(self->port); |
|
1059 #ifdef AL_405 |
|
1060 width = ALgetsampfmt(c); |
|
1061 if (width == AL_SAMPFMT_FLOAT) |
|
1062 width = sizeof(float); |
|
1063 else if (width == AL_SAMPFMT_DOUBLE) |
|
1064 width = sizeof(double); |
|
1065 else |
|
1066 width = ALgetwidth(c); |
|
1067 #else |
|
1068 width = ALgetwidth(c); |
|
1069 #endif /* AL_405 */ |
|
1070 ALfreeconfig(c); |
|
1071 v = PyString_FromStringAndSize((char *)NULL, width * count); |
|
1072 if (v == NULL) |
|
1073 return NULL; |
|
1074 |
|
1075 Py_BEGIN_ALLOW_THREADS |
|
1076 ret = ALreadsamps(self->port, (void *) PyString_AsString(v), count); |
|
1077 Py_END_ALLOW_THREADS |
|
1078 if (ret == -1) { |
|
1079 Py_DECREF(v); |
|
1080 return NULL; |
|
1081 } |
|
1082 |
|
1083 return (v); |
|
1084 } |
|
1085 |
|
1086 static PyObject * |
|
1087 alp_writesamps(alpobject *self, PyObject *args) |
|
1088 { |
|
1089 char *buf; |
|
1090 int size, width; |
|
1091 ALconfig c; |
|
1092 int ret; |
|
1093 |
|
1094 if (!PyArg_ParseTuple(args, "s#:writesamps", &buf, &size)) |
|
1095 return NULL; |
|
1096 |
|
1097 c = ALgetconfig(self->port); |
|
1098 #ifdef AL_405 |
|
1099 width = ALgetsampfmt(c); |
|
1100 if (width == AL_SAMPFMT_FLOAT) |
|
1101 width = sizeof(float); |
|
1102 else if (width == AL_SAMPFMT_DOUBLE) |
|
1103 width = sizeof(double); |
|
1104 else |
|
1105 width = ALgetwidth(c); |
|
1106 #else |
|
1107 width = ALgetwidth(c); |
|
1108 #endif /* AL_405 */ |
|
1109 ALfreeconfig(c); |
|
1110 Py_BEGIN_ALLOW_THREADS |
|
1111 ret = ALwritesamps (self->port, (void *) buf, (long) size / width); |
|
1112 Py_END_ALLOW_THREADS |
|
1113 if (ret == -1) |
|
1114 return NULL; |
|
1115 |
|
1116 Py_INCREF(Py_None); |
|
1117 return Py_None; |
|
1118 } |
|
1119 |
|
1120 static PyObject * |
|
1121 alp_getfillpoint(alpobject *self, PyObject *args) |
|
1122 { |
|
1123 long count; |
|
1124 |
|
1125 if (!PyArg_ParseTuple(args, ":GetFillPoint")) |
|
1126 return NULL; |
|
1127 if ((count = ALgetfillpoint(self->port)) == -1) |
|
1128 return NULL; |
|
1129 return PyInt_FromLong(count); |
|
1130 } |
|
1131 |
|
1132 static PyObject * |
|
1133 alp_setfillpoint(alpobject *self, PyObject *args) |
|
1134 { |
|
1135 long count; |
|
1136 |
|
1137 if (!PyArg_ParseTuple(args, "l:SetFillPoint", &count)) |
|
1138 return NULL; |
|
1139 if (ALsetfillpoint(self->port, count) == -1) |
|
1140 return NULL; |
|
1141 Py_INCREF(Py_None); |
|
1142 return Py_None; |
|
1143 } |
|
1144 |
|
1145 static PyObject * |
|
1146 alp_setconfig(alpobject *self, PyObject *args) |
|
1147 { |
|
1148 alcobject *config; |
|
1149 |
|
1150 if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config)) |
|
1151 return NULL; |
|
1152 if (ALsetconfig(self->port, config->config) == -1) |
|
1153 return NULL; |
|
1154 Py_INCREF(Py_None); |
|
1155 return Py_None; |
|
1156 } |
|
1157 |
|
1158 static PyObject * |
|
1159 alp_getconfig(alpobject *self, PyObject *args) |
|
1160 { |
|
1161 ALconfig config; |
|
1162 |
|
1163 if (!PyArg_ParseTuple(args, ":GetConfig")) |
|
1164 return NULL; |
|
1165 config = ALgetconfig(self->port); |
|
1166 if (config == NULL) |
|
1167 return NULL; |
|
1168 return newalcobject(config); |
|
1169 } |
|
1170 |
|
1171 #ifdef AL_405 |
|
1172 static PyObject * |
|
1173 alp_getstatus(alpobject *self, PyObject *args) |
|
1174 { |
|
1175 PyObject *list, *v; |
|
1176 long *PVbuffer; |
|
1177 long length; |
|
1178 int i; |
|
1179 |
|
1180 if (!PyArg_ParseTuple(args, "O!", &PyList_Type, &list)) |
|
1181 return NULL; |
|
1182 length = PyList_Size(list); |
|
1183 PVbuffer = PyMem_NEW(long, length); |
|
1184 if (PVbuffer == NULL) |
|
1185 return PyErr_NoMemory(); |
|
1186 for (i = 0; i < length; i++) { |
|
1187 v = PyList_GetItem(list, i); |
|
1188 if (!PyInt_Check(v)) { |
|
1189 PyMem_DEL(PVbuffer); |
|
1190 PyErr_BadArgument(); |
|
1191 return NULL; |
|
1192 } |
|
1193 PVbuffer[i] = PyInt_AsLong(v); |
|
1194 } |
|
1195 |
|
1196 if (ALgetstatus(self->port, PVbuffer, length) == -1) |
|
1197 return NULL; |
|
1198 |
|
1199 for (i = 0; i < length; i++) |
|
1200 PyList_SetItem(list, i, PyInt_FromLong(PVbuffer[i])); |
|
1201 |
|
1202 PyMem_DEL(PVbuffer); |
|
1203 |
|
1204 Py_INCREF(Py_None); |
|
1205 return Py_None; |
|
1206 } |
|
1207 #endif /* AL_405 */ |
|
1208 |
|
1209 #endif /* OLD_INTERFACE */ |
|
1210 |
|
1211 static struct PyMethodDef alp_methods[] = { |
|
1212 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
1213 {"SetConfig", (PyCFunction)alp_SetConfig, METH_VARARGS, alp_SetConfig__doc__}, |
|
1214 {"GetConfig", (PyCFunction)alp_GetConfig, METH_VARARGS, alp_GetConfig__doc__}, |
|
1215 {"GetResource", (PyCFunction)alp_GetResource, METH_VARARGS, alp_GetResource__doc__}, |
|
1216 {"GetFD", (PyCFunction)alp_GetFD, METH_VARARGS, alp_GetFD__doc__}, |
|
1217 {"GetFilled", (PyCFunction)alp_GetFilled, METH_VARARGS, alp_GetFilled__doc__}, |
|
1218 {"GetFillable", (PyCFunction)alp_GetFillable, METH_VARARGS, alp_GetFillable__doc__}, |
|
1219 {"ReadFrames", (PyCFunction)alp_ReadFrames, METH_VARARGS, alp_ReadFrames__doc__}, |
|
1220 {"DiscardFrames", (PyCFunction)alp_DiscardFrames, METH_VARARGS, alp_DiscardFrames__doc__}, |
|
1221 {"ZeroFrames", (PyCFunction)alp_ZeroFrames, METH_VARARGS, alp_ZeroFrames__doc__}, |
|
1222 {"SetFillPoint", (PyCFunction)alp_SetFillPoint, METH_VARARGS, alp_SetFillPoint__doc__}, |
|
1223 {"GetFillPoint", (PyCFunction)alp_GetFillPoint, METH_VARARGS, alp_GetFillPoint__doc__}, |
|
1224 {"GetFrameNumber", (PyCFunction)alp_GetFrameNumber, METH_VARARGS, alp_GetFrameNumber__doc__}, |
|
1225 {"GetFrameTime", (PyCFunction)alp_GetFrameTime, METH_VARARGS, alp_GetFrameTime__doc__}, |
|
1226 {"WriteFrames", (PyCFunction)alp_WriteFrames, METH_VARARGS, alp_WriteFrames__doc__}, |
|
1227 {"ClosePort", (PyCFunction)alp_ClosePort, METH_VARARGS, alp_ClosePort__doc__}, |
|
1228 #endif /* AL_NO_ELEM */ |
|
1229 #ifdef OLD_INTERFACE |
|
1230 {"closeport", (PyCFunction)alp_closeport, METH_VARARGS}, |
|
1231 {"getfd", (PyCFunction)alp_getfd, METH_VARARGS}, |
|
1232 {"fileno", (PyCFunction)alp_getfd, METH_VARARGS}, |
|
1233 {"getfilled", (PyCFunction)alp_getfilled, METH_VARARGS}, |
|
1234 {"getfillable", (PyCFunction)alp_getfillable, METH_VARARGS}, |
|
1235 {"readsamps", (PyCFunction)alp_readsamps, METH_VARARGS}, |
|
1236 {"writesamps", (PyCFunction)alp_writesamps, METH_VARARGS}, |
|
1237 {"setfillpoint", (PyCFunction)alp_setfillpoint, METH_VARARGS}, |
|
1238 {"getfillpoint", (PyCFunction)alp_getfillpoint, METH_VARARGS}, |
|
1239 {"setconfig", (PyCFunction)alp_setconfig, METH_VARARGS}, |
|
1240 {"getconfig", (PyCFunction)alp_getconfig, METH_VARARGS}, |
|
1241 #ifdef AL_405 |
|
1242 {"getstatus", (PyCFunction)alp_getstatus, METH_VARARGS}, |
|
1243 #endif /* AL_405 */ |
|
1244 #endif /* OLD_INTERFACE */ |
|
1245 |
|
1246 {NULL, NULL} /* sentinel */ |
|
1247 }; |
|
1248 |
|
1249 /* ---------- */ |
|
1250 |
|
1251 |
|
1252 static PyObject * |
|
1253 newalpobject(ALport port) |
|
1254 { |
|
1255 alpobject *self; |
|
1256 |
|
1257 self = PyObject_New(alpobject, &Alptype); |
|
1258 if (self == NULL) |
|
1259 return NULL; |
|
1260 /* XXXX Add your own initializers here */ |
|
1261 self->port = port; |
|
1262 return (PyObject *) self; |
|
1263 } |
|
1264 |
|
1265 |
|
1266 static void |
|
1267 alp_dealloc(alpobject *self) |
|
1268 { |
|
1269 /* XXXX Add your own cleanup code here */ |
|
1270 if (self->port) { |
|
1271 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
1272 alClosePort(self->port); |
|
1273 #else |
|
1274 ALcloseport(self->port); |
|
1275 #endif |
|
1276 } |
|
1277 PyObject_Del(self); |
|
1278 } |
|
1279 |
|
1280 static PyObject * |
|
1281 alp_getattr(alpobject *self, char *name) |
|
1282 { |
|
1283 /* XXXX Add your own getattr code here */ |
|
1284 if (self->port == NULL) { |
|
1285 PyErr_SetString(ErrorObject, "port already closed"); |
|
1286 return NULL; |
|
1287 } |
|
1288 return Py_FindMethod(alp_methods, (PyObject *)self, name); |
|
1289 } |
|
1290 |
|
1291 PyDoc_STRVAR(Alptype__doc__, ""); |
|
1292 |
|
1293 static PyTypeObject Alptype = { |
|
1294 PyObject_HEAD_INIT(&PyType_Type) |
|
1295 0, /*ob_size*/ |
|
1296 "al.port", /*tp_name*/ |
|
1297 sizeof(alpobject), /*tp_basicsize*/ |
|
1298 0, /*tp_itemsize*/ |
|
1299 /* methods */ |
|
1300 (destructor)alp_dealloc, /*tp_dealloc*/ |
|
1301 (printfunc)0, /*tp_print*/ |
|
1302 (getattrfunc)alp_getattr, /*tp_getattr*/ |
|
1303 (setattrfunc)0, /*tp_setattr*/ |
|
1304 (cmpfunc)0, /*tp_compare*/ |
|
1305 (reprfunc)0, /*tp_repr*/ |
|
1306 0, /*tp_as_number*/ |
|
1307 0, /*tp_as_sequence*/ |
|
1308 0, /*tp_as_mapping*/ |
|
1309 (hashfunc)0, /*tp_hash*/ |
|
1310 (ternaryfunc)0, /*tp_call*/ |
|
1311 (reprfunc)0, /*tp_str*/ |
|
1312 |
|
1313 /* Space for future expansion */ |
|
1314 0L,0L,0L,0L, |
|
1315 Alptype__doc__ /* Documentation string */ |
|
1316 }; |
|
1317 |
|
1318 /* End of code for port objects */ |
|
1319 /* -------------------------------------------------------- */ |
|
1320 |
|
1321 |
|
1322 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
1323 |
|
1324 PyDoc_STRVAR(al_NewConfig__doc__, |
|
1325 "alNewConfig: create and initialize an audio ALconfig structure."); |
|
1326 |
|
1327 static PyObject * |
|
1328 al_NewConfig(PyObject *self, PyObject *args) |
|
1329 { |
|
1330 ALconfig config; |
|
1331 |
|
1332 if (!PyArg_ParseTuple(args, ":NewConfig")) |
|
1333 return NULL; |
|
1334 if ((config = alNewConfig()) == NULL) |
|
1335 return NULL; |
|
1336 return newalcobject(config); |
|
1337 } |
|
1338 |
|
1339 PyDoc_STRVAR(al_OpenPort__doc__, |
|
1340 "alOpenPort: open an audio port."); |
|
1341 |
|
1342 static PyObject * |
|
1343 al_OpenPort(PyObject *self, PyObject *args) |
|
1344 { |
|
1345 ALport port; |
|
1346 char *name, *dir; |
|
1347 alcobject *config = NULL; |
|
1348 |
|
1349 if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config)) |
|
1350 return NULL; |
|
1351 if ((port = alOpenPort(name, dir, config ? config->config : NULL)) == NULL) |
|
1352 return NULL; |
|
1353 return newalpobject(port); |
|
1354 } |
|
1355 |
|
1356 PyDoc_STRVAR(al_Connect__doc__, |
|
1357 "alConnect: connect two audio I/O resources."); |
|
1358 |
|
1359 static PyObject * |
|
1360 al_Connect(PyObject *self, PyObject *args) |
|
1361 { |
|
1362 int source, dest, nprops = 0, id, i; |
|
1363 ALpv *props = NULL; |
|
1364 ALparamInfo *propinfo = NULL; |
|
1365 PyObject *propobj = NULL; |
|
1366 |
|
1367 if (!PyArg_ParseTuple(args, "ii|O!:Connect", &source, &dest, &PyList_Type, &propobj)) |
|
1368 return NULL; |
|
1369 if (propobj != NULL) { |
|
1370 nprops = python2params(source, dest, propobj, &props, &propinfo); |
|
1371 if (nprops < 0) |
|
1372 return NULL; |
|
1373 } |
|
1374 |
|
1375 id = alConnect(source, dest, props, nprops); |
|
1376 |
|
1377 if (props) { |
|
1378 for (i = 0; i < nprops; i++) { |
|
1379 switch (propinfo[i].valueType) { |
|
1380 case AL_SET_VAL: |
|
1381 case AL_VECTOR_VAL: |
|
1382 PyMem_DEL(props[i].value.ptr); |
|
1383 break; |
|
1384 } |
|
1385 } |
|
1386 PyMem_DEL(props); |
|
1387 PyMem_DEL(propinfo); |
|
1388 } |
|
1389 |
|
1390 if (id < 0) |
|
1391 return NULL; |
|
1392 return PyInt_FromLong((long) id); |
|
1393 } |
|
1394 |
|
1395 PyDoc_STRVAR(al_Disconnect__doc__, |
|
1396 "alDisconnect: delete a connection between two audio I/O resources."); |
|
1397 |
|
1398 static PyObject * |
|
1399 al_Disconnect(PyObject *self, PyObject *args) |
|
1400 { |
|
1401 int res; |
|
1402 |
|
1403 if (!PyArg_ParseTuple(args, "i:Disconnect", &res)) |
|
1404 return NULL; |
|
1405 if (alDisconnect(res) < 0) |
|
1406 return NULL; |
|
1407 Py_INCREF(Py_None); |
|
1408 return Py_None; |
|
1409 } |
|
1410 |
|
1411 PyDoc_STRVAR(al_GetParams__doc__, |
|
1412 "alGetParams: get the values of audio resource parameters."); |
|
1413 |
|
1414 static PyObject * |
|
1415 al_GetParams(PyObject *self, PyObject *args) |
|
1416 { |
|
1417 int resource; |
|
1418 PyObject *pvslist, *item = NULL, *v = NULL; |
|
1419 ALpv *pvs; |
|
1420 int i, j, npvs; |
|
1421 ALparamInfo *pinfo; |
|
1422 |
|
1423 if (!PyArg_ParseTuple(args, "iO!:GetParams", &resource, &PyList_Type, &pvslist)) |
|
1424 return NULL; |
|
1425 npvs = PyList_Size(pvslist); |
|
1426 pvs = PyMem_NEW(ALpv, npvs); |
|
1427 pinfo = PyMem_NEW(ALparamInfo, npvs); |
|
1428 for (i = 0; i < npvs; i++) { |
|
1429 item = PyList_GetItem(pvslist, i); |
|
1430 if (!PyInt_Check(item)) { |
|
1431 item = NULL; |
|
1432 PyErr_SetString(ErrorObject, "list of integers expected"); |
|
1433 goto error; |
|
1434 } |
|
1435 pvs[i].param = (int) PyInt_AsLong(item); |
|
1436 item = NULL; /* not needed anymore */ |
|
1437 if (alGetParamInfo(resource, pvs[i].param, &pinfo[i]) < 0) |
|
1438 goto error; |
|
1439 switch (pinfo[i].valueType) { |
|
1440 case AL_NO_VAL: |
|
1441 break; |
|
1442 case AL_MATRIX_VAL: |
|
1443 pinfo[i].maxElems *= pinfo[i].maxElems2; |
|
1444 /* fall through */ |
|
1445 case AL_STRING_VAL: |
|
1446 case AL_SET_VAL: |
|
1447 case AL_VECTOR_VAL: |
|
1448 switch (pinfo[i].elementType) { |
|
1449 case AL_INT32_ELEM: |
|
1450 case AL_RESOURCE_ELEM: |
|
1451 case AL_ENUM_ELEM: |
|
1452 pvs[i].value.ptr = PyMem_NEW(int, pinfo[i].maxElems); |
|
1453 pvs[i].sizeIn = pinfo[i].maxElems; |
|
1454 break; |
|
1455 case AL_INT64_ELEM: |
|
1456 case AL_FIXED_ELEM: |
|
1457 pvs[i].value.ptr = PyMem_NEW(long long, pinfo[i].maxElems); |
|
1458 pvs[i].sizeIn = pinfo[i].maxElems; |
|
1459 break; |
|
1460 case AL_CHAR_ELEM: |
|
1461 pvs[i].value.ptr = PyMem_NEW(char, 32); |
|
1462 pvs[i].sizeIn = 32; |
|
1463 break; |
|
1464 case AL_NO_ELEM: |
|
1465 case AL_PTR_ELEM: |
|
1466 default: |
|
1467 PyErr_SetString(ErrorObject, "internal error"); |
|
1468 goto error; |
|
1469 } |
|
1470 break; |
|
1471 case AL_SCALAR_VAL: |
|
1472 break; |
|
1473 default: |
|
1474 PyErr_SetString(ErrorObject, "internal error"); |
|
1475 goto error; |
|
1476 } |
|
1477 if (pinfo[i].valueType == AL_MATRIX_VAL) { |
|
1478 pinfo[i].maxElems /= pinfo[i].maxElems2; |
|
1479 pvs[i].sizeIn /= pinfo[i].maxElems2; |
|
1480 pvs[i].size2In = pinfo[i].maxElems2; |
|
1481 } |
|
1482 } |
|
1483 if (alGetParams(resource, pvs, npvs) < 0) |
|
1484 goto error; |
|
1485 if (!(v = PyList_New(npvs))) |
|
1486 goto error; |
|
1487 for (i = 0; i < npvs; i++) { |
|
1488 if (pvs[i].sizeOut < 0) { |
|
1489 char buf[32]; |
|
1490 PyOS_snprintf(buf, sizeof(buf), |
|
1491 "problem with param %d", i); |
|
1492 PyErr_SetString(ErrorObject, buf); |
|
1493 goto error; |
|
1494 } |
|
1495 switch (pinfo[i].valueType) { |
|
1496 case AL_NO_VAL: |
|
1497 item = Py_None; |
|
1498 Py_INCREF(item); |
|
1499 break; |
|
1500 case AL_STRING_VAL: |
|
1501 item = PyString_FromString(pvs[i].value.ptr); |
|
1502 PyMem_DEL(pvs[i].value.ptr); |
|
1503 break; |
|
1504 case AL_MATRIX_VAL: |
|
1505 /* XXXX this is not right */ |
|
1506 pvs[i].sizeOut *= pvs[i].size2Out; |
|
1507 /* fall through */ |
|
1508 case AL_SET_VAL: |
|
1509 case AL_VECTOR_VAL: |
|
1510 item = PyList_New(pvs[i].sizeOut); |
|
1511 for (j = 0; j < pvs[i].sizeOut; j++) { |
|
1512 switch (pinfo[i].elementType) { |
|
1513 case AL_INT32_ELEM: |
|
1514 case AL_RESOURCE_ELEM: |
|
1515 case AL_ENUM_ELEM: |
|
1516 PyList_SetItem(item, j, PyInt_FromLong((long) ((int *) pvs[i].value.ptr)[j])); |
|
1517 break; |
|
1518 case AL_INT64_ELEM: |
|
1519 PyList_SetItem(item, j, PyLong_FromLongLong(((long long *) pvs[i].value.ptr)[j])); |
|
1520 break; |
|
1521 case AL_FIXED_ELEM: |
|
1522 PyList_SetItem(item, j, PyFloat_FromDouble(alFixedToDouble(((long long *) pvs[i].value.ptr)[j]))); |
|
1523 break; |
|
1524 default: |
|
1525 PyErr_SetString(ErrorObject, "internal error"); |
|
1526 goto error; |
|
1527 } |
|
1528 } |
|
1529 PyMem_DEL(pvs[i].value.ptr); |
|
1530 break; |
|
1531 case AL_SCALAR_VAL: |
|
1532 item = param2python(resource, pvs[i].param, pvs[i].value, &pinfo[i]); |
|
1533 break; |
|
1534 } |
|
1535 if (PyErr_Occurred() || |
|
1536 PyList_SetItem(v, i, Py_BuildValue("(iO)", pvs[i].param, |
|
1537 item)) < 0 || |
|
1538 PyErr_Occurred()) |
|
1539 goto error; |
|
1540 Py_DECREF(item); |
|
1541 } |
|
1542 PyMem_DEL(pvs); |
|
1543 PyMem_DEL(pinfo); |
|
1544 return v; |
|
1545 |
|
1546 error: |
|
1547 Py_XDECREF(v); |
|
1548 Py_XDECREF(item); |
|
1549 if (pvs) |
|
1550 PyMem_DEL(pvs); |
|
1551 if (pinfo) |
|
1552 PyMem_DEL(pinfo); |
|
1553 return NULL; |
|
1554 } |
|
1555 |
|
1556 PyDoc_STRVAR(al_SetParams__doc__, |
|
1557 "alSetParams: set the values of audio resource parameters."); |
|
1558 |
|
1559 static PyObject * |
|
1560 al_SetParams(PyObject *self, PyObject *args) |
|
1561 { |
|
1562 int resource; |
|
1563 PyObject *pvslist; |
|
1564 ALpv *pvs; |
|
1565 ALparamInfo *pinfo; |
|
1566 int npvs, i; |
|
1567 |
|
1568 if (!PyArg_ParseTuple(args, "iO!:SetParams", &resource, &PyList_Type, &pvslist)) |
|
1569 return NULL; |
|
1570 npvs = python2params(resource, -1, pvslist, &pvs, &pinfo); |
|
1571 if (npvs < 0) |
|
1572 return NULL; |
|
1573 |
|
1574 if (alSetParams(resource, pvs, npvs) < 0) |
|
1575 goto error; |
|
1576 |
|
1577 /* cleanup */ |
|
1578 for (i = 0; i < npvs; i++) { |
|
1579 switch (pinfo[i].valueType) { |
|
1580 case AL_SET_VAL: |
|
1581 case AL_VECTOR_VAL: |
|
1582 PyMem_DEL(pvs[i].value.ptr); |
|
1583 break; |
|
1584 } |
|
1585 } |
|
1586 PyMem_DEL(pvs); |
|
1587 PyMem_DEL(pinfo); |
|
1588 |
|
1589 Py_INCREF(Py_None); |
|
1590 return Py_None; |
|
1591 |
|
1592 error: |
|
1593 /* XXXX we should clean up everything */ |
|
1594 if (pvs) |
|
1595 PyMem_DEL(pvs); |
|
1596 if (pinfo) |
|
1597 PyMem_DEL(pinfo); |
|
1598 return NULL; |
|
1599 } |
|
1600 |
|
1601 PyDoc_STRVAR(al_QueryValues__doc__, |
|
1602 "alQueryValues: get the set of possible values for a parameter."); |
|
1603 |
|
1604 static PyObject * |
|
1605 al_QueryValues(PyObject *self, PyObject *args) |
|
1606 { |
|
1607 int resource, param; |
|
1608 ALvalue *return_set = NULL; |
|
1609 int setsize = 32, qualsize = 0, nvals, i; |
|
1610 ALpv *quals = NULL; |
|
1611 ALparamInfo pinfo; |
|
1612 ALparamInfo *qualinfo = NULL; |
|
1613 PyObject *qualobj = NULL; |
|
1614 PyObject *res = NULL, *item; |
|
1615 |
|
1616 if (!PyArg_ParseTuple(args, "ii|O!:QueryValues", &resource, ¶m, |
|
1617 &PyList_Type, &qualobj)) |
|
1618 return NULL; |
|
1619 if (qualobj != NULL) { |
|
1620 qualsize = python2params(resource, param, qualobj, &quals, &qualinfo); |
|
1621 if (qualsize < 0) |
|
1622 return NULL; |
|
1623 } |
|
1624 setsize = 32; |
|
1625 return_set = PyMem_NEW(ALvalue, setsize); |
|
1626 if (return_set == NULL) { |
|
1627 PyErr_NoMemory(); |
|
1628 goto cleanup; |
|
1629 } |
|
1630 |
|
1631 retry: |
|
1632 nvals = alQueryValues(resource, param, return_set, setsize, quals, qualsize); |
|
1633 if (nvals < 0) |
|
1634 goto cleanup; |
|
1635 if (nvals > setsize) { |
|
1636 ALvalue *old_return_set = return_set; |
|
1637 setsize = nvals; |
|
1638 PyMem_RESIZE(return_set, ALvalue, setsize); |
|
1639 if (return_set == NULL) { |
|
1640 return_set = old_return_set; |
|
1641 PyErr_NoMemory(); |
|
1642 goto cleanup; |
|
1643 } |
|
1644 goto retry; |
|
1645 } |
|
1646 |
|
1647 if (alGetParamInfo(resource, param, &pinfo) < 0) |
|
1648 goto cleanup; |
|
1649 |
|
1650 res = PyList_New(nvals); |
|
1651 if (res == NULL) |
|
1652 goto cleanup; |
|
1653 for (i = 0; i < nvals; i++) { |
|
1654 item = param2python(resource, param, return_set[i], &pinfo); |
|
1655 if (item == NULL || |
|
1656 PyList_SetItem(res, i, item) < 0) { |
|
1657 Py_DECREF(res); |
|
1658 res = NULL; |
|
1659 goto cleanup; |
|
1660 } |
|
1661 } |
|
1662 |
|
1663 cleanup: |
|
1664 if (return_set) |
|
1665 PyMem_DEL(return_set); |
|
1666 if (quals) { |
|
1667 for (i = 0; i < qualsize; i++) { |
|
1668 switch (qualinfo[i].valueType) { |
|
1669 case AL_SET_VAL: |
|
1670 case AL_VECTOR_VAL: |
|
1671 PyMem_DEL(quals[i].value.ptr); |
|
1672 break; |
|
1673 } |
|
1674 } |
|
1675 PyMem_DEL(quals); |
|
1676 PyMem_DEL(qualinfo); |
|
1677 } |
|
1678 |
|
1679 return res; |
|
1680 } |
|
1681 |
|
1682 PyDoc_STRVAR(al_GetParamInfo__doc__, |
|
1683 "alGetParamInfo: get information about a parameter on " |
|
1684 "a particular audio resource."); |
|
1685 |
|
1686 static PyObject * |
|
1687 al_GetParamInfo(PyObject *self, PyObject *args) |
|
1688 { |
|
1689 int res, param; |
|
1690 ALparamInfo pinfo; |
|
1691 PyObject *v, *item; |
|
1692 |
|
1693 if (!PyArg_ParseTuple(args, "ii:GetParamInfo", &res, ¶m)) |
|
1694 return NULL; |
|
1695 if (alGetParamInfo(res, param, &pinfo) < 0) |
|
1696 return NULL; |
|
1697 v = PyDict_New(); |
|
1698 if (!v) return NULL; |
|
1699 |
|
1700 item = PyInt_FromLong((long) pinfo.resource); |
|
1701 PyDict_SetItemString(v, "resource", item); |
|
1702 Py_DECREF(item); |
|
1703 |
|
1704 item = PyInt_FromLong((long) pinfo.param); |
|
1705 PyDict_SetItemString(v, "param", item); |
|
1706 Py_DECREF(item); |
|
1707 |
|
1708 item = PyInt_FromLong((long) pinfo.valueType); |
|
1709 PyDict_SetItemString(v, "valueType", item); |
|
1710 Py_DECREF(item); |
|
1711 |
|
1712 if (pinfo.valueType != AL_NO_VAL && pinfo.valueType != AL_SCALAR_VAL) { |
|
1713 /* multiple values */ |
|
1714 item = PyInt_FromLong((long) pinfo.maxElems); |
|
1715 PyDict_SetItemString(v, "maxElems", item); |
|
1716 Py_DECREF(item); |
|
1717 |
|
1718 if (pinfo.valueType == AL_MATRIX_VAL) { |
|
1719 /* 2 dimensional */ |
|
1720 item = PyInt_FromLong((long) pinfo.maxElems2); |
|
1721 PyDict_SetItemString(v, "maxElems2", item); |
|
1722 Py_DECREF(item); |
|
1723 } |
|
1724 } |
|
1725 |
|
1726 item = PyInt_FromLong((long) pinfo.elementType); |
|
1727 PyDict_SetItemString(v, "elementType", item); |
|
1728 Py_DECREF(item); |
|
1729 |
|
1730 item = PyString_FromString(pinfo.name); |
|
1731 PyDict_SetItemString(v, "name", item); |
|
1732 Py_DECREF(item); |
|
1733 |
|
1734 item = param2python(res, param, pinfo.initial, &pinfo); |
|
1735 PyDict_SetItemString(v, "initial", item); |
|
1736 Py_DECREF(item); |
|
1737 |
|
1738 if (pinfo.elementType != AL_ENUM_ELEM && |
|
1739 pinfo.elementType != AL_RESOURCE_ELEM && |
|
1740 pinfo.elementType != AL_CHAR_ELEM) { |
|
1741 /* range param */ |
|
1742 item = param2python(res, param, pinfo.min, &pinfo); |
|
1743 PyDict_SetItemString(v, "min", item); |
|
1744 Py_DECREF(item); |
|
1745 |
|
1746 item = param2python(res, param, pinfo.max, &pinfo); |
|
1747 PyDict_SetItemString(v, "max", item); |
|
1748 Py_DECREF(item); |
|
1749 |
|
1750 item = param2python(res, param, pinfo.minDelta, &pinfo); |
|
1751 PyDict_SetItemString(v, "minDelta", item); |
|
1752 Py_DECREF(item); |
|
1753 |
|
1754 item = param2python(res, param, pinfo.maxDelta, &pinfo); |
|
1755 PyDict_SetItemString(v, "maxDelta", item); |
|
1756 Py_DECREF(item); |
|
1757 |
|
1758 item = PyInt_FromLong((long) pinfo.specialVals); |
|
1759 PyDict_SetItemString(v, "specialVals", item); |
|
1760 Py_DECREF(item); |
|
1761 } |
|
1762 |
|
1763 return v; |
|
1764 } |
|
1765 |
|
1766 PyDoc_STRVAR(al_GetResourceByName__doc__, |
|
1767 "alGetResourceByName: find an audio resource by name."); |
|
1768 |
|
1769 static PyObject * |
|
1770 al_GetResourceByName(PyObject *self, PyObject *args) |
|
1771 { |
|
1772 int res, start_res, type; |
|
1773 char *name; |
|
1774 |
|
1775 if (!PyArg_ParseTuple(args, "isi:GetResourceByName", &start_res, &name, &type)) |
|
1776 return NULL; |
|
1777 if ((res = alGetResourceByName(start_res, name, type)) == 0) |
|
1778 return NULL; |
|
1779 return PyInt_FromLong((long) res); |
|
1780 } |
|
1781 |
|
1782 PyDoc_STRVAR(al_IsSubtype__doc__, |
|
1783 "alIsSubtype: indicate if one resource type is a subtype of another."); |
|
1784 |
|
1785 static PyObject * |
|
1786 al_IsSubtype(PyObject *self, PyObject *args) |
|
1787 { |
|
1788 int type, subtype; |
|
1789 |
|
1790 if (!PyArg_ParseTuple(args, "ii:IsSubtype", &type, &subtype)) |
|
1791 return NULL; |
|
1792 return PyInt_FromLong((long) alIsSubtype(type, subtype)); |
|
1793 } |
|
1794 |
|
1795 PyDoc_STRVAR(al_SetErrorHandler__doc__, ""); |
|
1796 |
|
1797 static PyObject * |
|
1798 al_SetErrorHandler(PyObject *self, PyObject *args) |
|
1799 { |
|
1800 |
|
1801 if (!PyArg_ParseTuple(args, ":SetErrorHandler")) |
|
1802 return NULL; |
|
1803 Py_INCREF(Py_None); |
|
1804 return Py_None; |
|
1805 } |
|
1806 |
|
1807 #endif /* AL_NO_ELEM */ |
|
1808 |
|
1809 #ifdef OLD_INTERFACE |
|
1810 |
|
1811 static PyObject * |
|
1812 al_openport(PyObject *self, PyObject *args) |
|
1813 { |
|
1814 char *name, *dir; |
|
1815 ALport port; |
|
1816 alcobject *config = NULL; |
|
1817 |
|
1818 if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config)) |
|
1819 return NULL; |
|
1820 if ((port = ALopenport(name, dir, config ? config->config : NULL)) == NULL) |
|
1821 return NULL; |
|
1822 return newalpobject(port); |
|
1823 } |
|
1824 |
|
1825 static PyObject * |
|
1826 al_newconfig(PyObject *self, PyObject *args) |
|
1827 { |
|
1828 ALconfig config; |
|
1829 |
|
1830 if (!PyArg_ParseTuple(args, ":NewConfig")) |
|
1831 return NULL; |
|
1832 if ((config = ALnewconfig ()) == NULL) |
|
1833 return NULL; |
|
1834 return newalcobject(config); |
|
1835 } |
|
1836 |
|
1837 static PyObject * |
|
1838 al_queryparams(PyObject *self, PyObject *args) |
|
1839 { |
|
1840 long device; |
|
1841 long length; |
|
1842 long *PVbuffer; |
|
1843 long PVdummy[2]; |
|
1844 PyObject *v = NULL; |
|
1845 int i; |
|
1846 |
|
1847 if (!PyArg_ParseTuple(args, "l:queryparams", &device)) |
|
1848 return NULL; |
|
1849 if ((length = ALqueryparams(device, PVdummy, 2L)) == -1) |
|
1850 return NULL; |
|
1851 if ((PVbuffer = PyMem_NEW(long, length)) == NULL) |
|
1852 return PyErr_NoMemory(); |
|
1853 if (ALqueryparams(device, PVbuffer, length) >= 0 && |
|
1854 (v = PyList_New((int)length)) != NULL) { |
|
1855 for (i = 0; i < length; i++) |
|
1856 PyList_SetItem(v, i, PyInt_FromLong(PVbuffer[i])); |
|
1857 } |
|
1858 PyMem_DEL(PVbuffer); |
|
1859 return v; |
|
1860 } |
|
1861 |
|
1862 static PyObject * |
|
1863 doParams(PyObject *args, int (*func)(long, long *, long), int modified) |
|
1864 { |
|
1865 long device; |
|
1866 PyObject *list, *v; |
|
1867 long *PVbuffer; |
|
1868 long length; |
|
1869 int i; |
|
1870 |
|
1871 if (!PyArg_ParseTuple(args, "lO!", &device, &PyList_Type, &list)) |
|
1872 return NULL; |
|
1873 length = PyList_Size(list); |
|
1874 PVbuffer = PyMem_NEW(long, length); |
|
1875 if (PVbuffer == NULL) |
|
1876 return PyErr_NoMemory(); |
|
1877 for (i = 0; i < length; i++) { |
|
1878 v = PyList_GetItem(list, i); |
|
1879 if (!PyInt_Check(v)) { |
|
1880 PyMem_DEL(PVbuffer); |
|
1881 PyErr_BadArgument(); |
|
1882 return NULL; |
|
1883 } |
|
1884 PVbuffer[i] = PyInt_AsLong(v); |
|
1885 } |
|
1886 |
|
1887 if ((*func)(device, PVbuffer, length) == -1) { |
|
1888 PyMem_DEL(PVbuffer); |
|
1889 return NULL; |
|
1890 } |
|
1891 |
|
1892 if (modified) { |
|
1893 for (i = 0; i < length; i++) |
|
1894 PyList_SetItem(list, i, PyInt_FromLong(PVbuffer[i])); |
|
1895 } |
|
1896 |
|
1897 PyMem_DEL(PVbuffer); |
|
1898 |
|
1899 Py_INCREF(Py_None); |
|
1900 return Py_None; |
|
1901 } |
|
1902 |
|
1903 static PyObject * |
|
1904 al_getparams(PyObject *self, PyObject *args) |
|
1905 { |
|
1906 return doParams(args, ALgetparams, 1); |
|
1907 } |
|
1908 |
|
1909 static PyObject * |
|
1910 al_setparams(PyObject *self, PyObject *args) |
|
1911 { |
|
1912 return doParams(args, ALsetparams, 0); |
|
1913 } |
|
1914 |
|
1915 static PyObject * |
|
1916 al_getname(PyObject *self, PyObject *args) |
|
1917 { |
|
1918 long device, descriptor; |
|
1919 char *name; |
|
1920 |
|
1921 if (!PyArg_ParseTuple(args, "ll:getname", &device, &descriptor)) |
|
1922 return NULL; |
|
1923 if ((name = ALgetname(device, descriptor)) == NULL) |
|
1924 return NULL; |
|
1925 return PyString_FromString(name); |
|
1926 } |
|
1927 |
|
1928 static PyObject * |
|
1929 al_getdefault(PyObject *self, PyObject *args) |
|
1930 { |
|
1931 long device, descriptor, value; |
|
1932 |
|
1933 if (!PyArg_ParseTuple(args, "ll:getdefault", &device, &descriptor)) |
|
1934 return NULL; |
|
1935 if ((value = ALgetdefault(device, descriptor)) == -1) |
|
1936 return NULL; |
|
1937 return PyLong_FromLong(value); |
|
1938 } |
|
1939 |
|
1940 static PyObject * |
|
1941 al_getminmax(PyObject *self, PyObject *args) |
|
1942 { |
|
1943 long device, descriptor, min, max; |
|
1944 |
|
1945 if (!PyArg_ParseTuple(args, "ll:getminmax", &device, &descriptor)) |
|
1946 return NULL; |
|
1947 min = -1; |
|
1948 max = -1; |
|
1949 if (ALgetminmax(device, descriptor, &min, &max) == -1) |
|
1950 return NULL; |
|
1951 return Py_BuildValue("ll", min, max); |
|
1952 } |
|
1953 |
|
1954 #endif /* OLD_INTERFACE */ |
|
1955 |
|
1956 /* List of methods defined in the module */ |
|
1957 |
|
1958 static struct PyMethodDef al_methods[] = { |
|
1959 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
1960 {"NewConfig", (PyCFunction)al_NewConfig, METH_VARARGS, al_NewConfig__doc__}, |
|
1961 {"OpenPort", (PyCFunction)al_OpenPort, METH_VARARGS, al_OpenPort__doc__}, |
|
1962 {"Connect", (PyCFunction)al_Connect, METH_VARARGS, al_Connect__doc__}, |
|
1963 {"Disconnect", (PyCFunction)al_Disconnect, METH_VARARGS, al_Disconnect__doc__}, |
|
1964 {"GetParams", (PyCFunction)al_GetParams, METH_VARARGS, al_GetParams__doc__}, |
|
1965 {"SetParams", (PyCFunction)al_SetParams, METH_VARARGS, al_SetParams__doc__}, |
|
1966 {"QueryValues", (PyCFunction)al_QueryValues, METH_VARARGS, al_QueryValues__doc__}, |
|
1967 {"GetParamInfo", (PyCFunction)al_GetParamInfo, METH_VARARGS, al_GetParamInfo__doc__}, |
|
1968 {"GetResourceByName", (PyCFunction)al_GetResourceByName, METH_VARARGS, al_GetResourceByName__doc__}, |
|
1969 {"IsSubtype", (PyCFunction)al_IsSubtype, METH_VARARGS, al_IsSubtype__doc__}, |
|
1970 #if 0 |
|
1971 /* this one not supported */ |
|
1972 {"SetErrorHandler", (PyCFunction)al_SetErrorHandler, METH_VARARGS, al_SetErrorHandler__doc__}, |
|
1973 #endif |
|
1974 #endif /* AL_NO_ELEM */ |
|
1975 #ifdef OLD_INTERFACE |
|
1976 {"openport", (PyCFunction)al_openport, METH_VARARGS}, |
|
1977 {"newconfig", (PyCFunction)al_newconfig, METH_VARARGS}, |
|
1978 {"queryparams", (PyCFunction)al_queryparams, METH_VARARGS}, |
|
1979 {"getparams", (PyCFunction)al_getparams, METH_VARARGS}, |
|
1980 {"setparams", (PyCFunction)al_setparams, METH_VARARGS}, |
|
1981 {"getname", (PyCFunction)al_getname, METH_VARARGS}, |
|
1982 {"getdefault", (PyCFunction)al_getdefault, METH_VARARGS}, |
|
1983 {"getminmax", (PyCFunction)al_getminmax, METH_VARARGS}, |
|
1984 #endif /* OLD_INTERFACE */ |
|
1985 |
|
1986 {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ |
|
1987 }; |
|
1988 |
|
1989 |
|
1990 /* Initialization function for the module (*must* be called inital) */ |
|
1991 |
|
1992 PyDoc_STRVAR(al_module_documentation, ""); |
|
1993 |
|
1994 void |
|
1995 inital(void) |
|
1996 { |
|
1997 PyObject *m, *d, *x; |
|
1998 |
|
1999 if (PyErr_WarnPy3k("the al module has been removed in " |
|
2000 "Python 3.0", 2) < 0) |
|
2001 return; |
|
2002 |
|
2003 /* Create the module and add the functions */ |
|
2004 m = Py_InitModule4("al", al_methods, |
|
2005 al_module_documentation, |
|
2006 (PyObject*)NULL,PYTHON_API_VERSION); |
|
2007 if (m == NULL) |
|
2008 return; |
|
2009 |
|
2010 /* Add some symbolic constants to the module */ |
|
2011 d = PyModule_GetDict(m); |
|
2012 ErrorObject = PyErr_NewException("al.error", NULL, NULL); |
|
2013 PyDict_SetItemString(d, "error", ErrorObject); |
|
2014 |
|
2015 /* XXXX Add constants here */ |
|
2016 #ifdef AL_4CHANNEL |
|
2017 x = PyInt_FromLong((long) AL_4CHANNEL); |
|
2018 if (x == NULL || PyDict_SetItemString(d, "FOURCHANNEL", x) < 0) |
|
2019 goto error; |
|
2020 Py_DECREF(x); |
|
2021 #endif |
|
2022 #ifdef AL_ADAT_IF_TYPE |
|
2023 x = PyInt_FromLong((long) AL_ADAT_IF_TYPE); |
|
2024 if (x == NULL || PyDict_SetItemString(d, "ADAT_IF_TYPE", x) < 0) |
|
2025 goto error; |
|
2026 Py_DECREF(x); |
|
2027 #endif |
|
2028 #ifdef AL_ADAT_MCLK_TYPE |
|
2029 x = PyInt_FromLong((long) AL_ADAT_MCLK_TYPE); |
|
2030 if (x == NULL || PyDict_SetItemString(d, "ADAT_MCLK_TYPE", x) < 0) |
|
2031 goto error; |
|
2032 Py_DECREF(x); |
|
2033 #endif |
|
2034 #ifdef AL_AES_IF_TYPE |
|
2035 x = PyInt_FromLong((long) AL_AES_IF_TYPE); |
|
2036 if (x == NULL || PyDict_SetItemString(d, "AES_IF_TYPE", x) < 0) |
|
2037 goto error; |
|
2038 Py_DECREF(x); |
|
2039 #endif |
|
2040 #ifdef AL_AES_MCLK_TYPE |
|
2041 x = PyInt_FromLong((long) AL_AES_MCLK_TYPE); |
|
2042 if (x == NULL || PyDict_SetItemString(d, "AES_MCLK_TYPE", x) < 0) |
|
2043 goto error; |
|
2044 Py_DECREF(x); |
|
2045 #endif |
|
2046 #ifdef AL_ANALOG_IF_TYPE |
|
2047 x = PyInt_FromLong((long) AL_ANALOG_IF_TYPE); |
|
2048 if (x == NULL || PyDict_SetItemString(d, "ANALOG_IF_TYPE", x) < 0) |
|
2049 goto error; |
|
2050 Py_DECREF(x); |
|
2051 #endif |
|
2052 #ifdef AL_ASSOCIATE |
|
2053 x = PyInt_FromLong((long) AL_ASSOCIATE); |
|
2054 if (x == NULL || PyDict_SetItemString(d, "ASSOCIATE", x) < 0) |
|
2055 goto error; |
|
2056 Py_DECREF(x); |
|
2057 #endif |
|
2058 #ifdef AL_BAD_BUFFER_NULL |
|
2059 x = PyInt_FromLong((long) AL_BAD_BUFFER_NULL); |
|
2060 if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFER_NULL", x) < 0) |
|
2061 goto error; |
|
2062 Py_DECREF(x); |
|
2063 #endif |
|
2064 #ifdef AL_BAD_BUFFERLENGTH |
|
2065 x = PyInt_FromLong((long) AL_BAD_BUFFERLENGTH); |
|
2066 if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH", x) < 0) |
|
2067 goto error; |
|
2068 Py_DECREF(x); |
|
2069 #endif |
|
2070 #ifdef AL_BAD_BUFFERLENGTH_NEG |
|
2071 x = PyInt_FromLong((long) AL_BAD_BUFFERLENGTH_NEG); |
|
2072 if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH_NEG", x) < 0) |
|
2073 goto error; |
|
2074 Py_DECREF(x); |
|
2075 #endif |
|
2076 #ifdef AL_BAD_BUFFERLENGTH_ODD |
|
2077 x = PyInt_FromLong((long) AL_BAD_BUFFERLENGTH_ODD); |
|
2078 if (x == NULL || PyDict_SetItemString(d, "BAD_BUFFERLENGTH_ODD", x) < 0) |
|
2079 goto error; |
|
2080 Py_DECREF(x); |
|
2081 #endif |
|
2082 #ifdef AL_BAD_CHANNELS |
|
2083 x = PyInt_FromLong((long) AL_BAD_CHANNELS); |
|
2084 if (x == NULL || PyDict_SetItemString(d, "BAD_CHANNELS", x) < 0) |
|
2085 goto error; |
|
2086 Py_DECREF(x); |
|
2087 #endif |
|
2088 #ifdef AL_BAD_CONFIG |
|
2089 x = PyInt_FromLong((long) AL_BAD_CONFIG); |
|
2090 if (x == NULL || PyDict_SetItemString(d, "BAD_CONFIG", x) < 0) |
|
2091 goto error; |
|
2092 Py_DECREF(x); |
|
2093 #endif |
|
2094 #ifdef AL_BAD_COUNT_NEG |
|
2095 x = PyInt_FromLong((long) AL_BAD_COUNT_NEG); |
|
2096 if (x == NULL || PyDict_SetItemString(d, "BAD_COUNT_NEG", x) < 0) |
|
2097 goto error; |
|
2098 Py_DECREF(x); |
|
2099 #endif |
|
2100 #ifdef AL_BAD_DEVICE |
|
2101 x = PyInt_FromLong((long) AL_BAD_DEVICE); |
|
2102 if (x == NULL || PyDict_SetItemString(d, "BAD_DEVICE", x) < 0) |
|
2103 goto error; |
|
2104 Py_DECREF(x); |
|
2105 #endif |
|
2106 #ifdef AL_BAD_DEVICE_ACCESS |
|
2107 x = PyInt_FromLong((long) AL_BAD_DEVICE_ACCESS); |
|
2108 if (x == NULL || PyDict_SetItemString(d, "BAD_DEVICE_ACCESS", x) < 0) |
|
2109 goto error; |
|
2110 Py_DECREF(x); |
|
2111 #endif |
|
2112 #ifdef AL_BAD_DIRECTION |
|
2113 x = PyInt_FromLong((long) AL_BAD_DIRECTION); |
|
2114 if (x == NULL || PyDict_SetItemString(d, "BAD_DIRECTION", x) < 0) |
|
2115 goto error; |
|
2116 Py_DECREF(x); |
|
2117 #endif |
|
2118 #ifdef AL_BAD_FILLPOINT |
|
2119 x = PyInt_FromLong((long) AL_BAD_FILLPOINT); |
|
2120 if (x == NULL || PyDict_SetItemString(d, "BAD_FILLPOINT", x) < 0) |
|
2121 goto error; |
|
2122 Py_DECREF(x); |
|
2123 #endif |
|
2124 #ifdef AL_BAD_FLOATMAX |
|
2125 x = PyInt_FromLong((long) AL_BAD_FLOATMAX); |
|
2126 if (x == NULL || PyDict_SetItemString(d, "BAD_FLOATMAX", x) < 0) |
|
2127 goto error; |
|
2128 Py_DECREF(x); |
|
2129 #endif |
|
2130 #ifdef AL_BAD_ILLEGAL_STATE |
|
2131 x = PyInt_FromLong((long) AL_BAD_ILLEGAL_STATE); |
|
2132 if (x == NULL || PyDict_SetItemString(d, "BAD_ILLEGAL_STATE", x) < 0) |
|
2133 goto error; |
|
2134 Py_DECREF(x); |
|
2135 #endif |
|
2136 #ifdef AL_BAD_NO_PORTS |
|
2137 x = PyInt_FromLong((long) AL_BAD_NO_PORTS); |
|
2138 if (x == NULL || PyDict_SetItemString(d, "BAD_NO_PORTS", x) < 0) |
|
2139 goto error; |
|
2140 Py_DECREF(x); |
|
2141 #endif |
|
2142 #ifdef AL_BAD_NOT_FOUND |
|
2143 x = PyInt_FromLong((long) AL_BAD_NOT_FOUND); |
|
2144 if (x == NULL || PyDict_SetItemString(d, "BAD_NOT_FOUND", x) < 0) |
|
2145 goto error; |
|
2146 Py_DECREF(x); |
|
2147 #endif |
|
2148 #ifdef AL_BAD_NOT_IMPLEMENTED |
|
2149 x = PyInt_FromLong((long) AL_BAD_NOT_IMPLEMENTED); |
|
2150 if (x == NULL || PyDict_SetItemString(d, "BAD_NOT_IMPLEMENTED", x) < 0) |
|
2151 goto error; |
|
2152 Py_DECREF(x); |
|
2153 #endif |
|
2154 #ifdef AL_BAD_OUT_OF_MEM |
|
2155 x = PyInt_FromLong((long) AL_BAD_OUT_OF_MEM); |
|
2156 if (x == NULL || PyDict_SetItemString(d, "BAD_OUT_OF_MEM", x) < 0) |
|
2157 goto error; |
|
2158 Py_DECREF(x); |
|
2159 #endif |
|
2160 #ifdef AL_BAD_PARAM |
|
2161 x = PyInt_FromLong((long) AL_BAD_PARAM); |
|
2162 if (x == NULL || PyDict_SetItemString(d, "BAD_PARAM", x) < 0) |
|
2163 goto error; |
|
2164 Py_DECREF(x); |
|
2165 #endif |
|
2166 #ifdef AL_BAD_PERMISSIONS |
|
2167 x = PyInt_FromLong((long) AL_BAD_PERMISSIONS); |
|
2168 if (x == NULL || PyDict_SetItemString(d, "BAD_PERMISSIONS", x) < 0) |
|
2169 goto error; |
|
2170 Py_DECREF(x); |
|
2171 #endif |
|
2172 #ifdef AL_BAD_PORT |
|
2173 x = PyInt_FromLong((long) AL_BAD_PORT); |
|
2174 if (x == NULL || PyDict_SetItemString(d, "BAD_PORT", x) < 0) |
|
2175 goto error; |
|
2176 Py_DECREF(x); |
|
2177 #endif |
|
2178 #ifdef AL_BAD_PORTSTYLE |
|
2179 x = PyInt_FromLong((long) AL_BAD_PORTSTYLE); |
|
2180 if (x == NULL || PyDict_SetItemString(d, "BAD_PORTSTYLE", x) < 0) |
|
2181 goto error; |
|
2182 Py_DECREF(x); |
|
2183 #endif |
|
2184 #ifdef AL_BAD_PVBUFFER |
|
2185 x = PyInt_FromLong((long) AL_BAD_PVBUFFER); |
|
2186 if (x == NULL || PyDict_SetItemString(d, "BAD_PVBUFFER", x) < 0) |
|
2187 goto error; |
|
2188 Py_DECREF(x); |
|
2189 #endif |
|
2190 #ifdef AL_BAD_QSIZE |
|
2191 x = PyInt_FromLong((long) AL_BAD_QSIZE); |
|
2192 if (x == NULL || PyDict_SetItemString(d, "BAD_QSIZE", x) < 0) |
|
2193 goto error; |
|
2194 Py_DECREF(x); |
|
2195 #endif |
|
2196 #ifdef AL_BAD_RATE |
|
2197 x = PyInt_FromLong((long) AL_BAD_RATE); |
|
2198 if (x == NULL || PyDict_SetItemString(d, "BAD_RATE", x) < 0) |
|
2199 goto error; |
|
2200 Py_DECREF(x); |
|
2201 #endif |
|
2202 #ifdef AL_BAD_RESOURCE |
|
2203 x = PyInt_FromLong((long) AL_BAD_RESOURCE); |
|
2204 if (x == NULL || PyDict_SetItemString(d, "BAD_RESOURCE", x) < 0) |
|
2205 goto error; |
|
2206 Py_DECREF(x); |
|
2207 #endif |
|
2208 #ifdef AL_BAD_SAMPFMT |
|
2209 x = PyInt_FromLong((long) AL_BAD_SAMPFMT); |
|
2210 if (x == NULL || PyDict_SetItemString(d, "BAD_SAMPFMT", x) < 0) |
|
2211 goto error; |
|
2212 Py_DECREF(x); |
|
2213 #endif |
|
2214 #ifdef AL_BAD_TRANSFER_SIZE |
|
2215 x = PyInt_FromLong((long) AL_BAD_TRANSFER_SIZE); |
|
2216 if (x == NULL || PyDict_SetItemString(d, "BAD_TRANSFER_SIZE", x) < 0) |
|
2217 goto error; |
|
2218 Py_DECREF(x); |
|
2219 #endif |
|
2220 #ifdef AL_BAD_WIDTH |
|
2221 x = PyInt_FromLong((long) AL_BAD_WIDTH); |
|
2222 if (x == NULL || PyDict_SetItemString(d, "BAD_WIDTH", x) < 0) |
|
2223 goto error; |
|
2224 Py_DECREF(x); |
|
2225 #endif |
|
2226 #ifdef AL_CHANNEL_MODE |
|
2227 x = PyInt_FromLong((long) AL_CHANNEL_MODE); |
|
2228 if (x == NULL || PyDict_SetItemString(d, "CHANNEL_MODE", x) < 0) |
|
2229 goto error; |
|
2230 Py_DECREF(x); |
|
2231 #endif |
|
2232 #ifdef AL_CHANNELS |
|
2233 x = PyInt_FromLong((long) AL_CHANNELS); |
|
2234 if (x == NULL || PyDict_SetItemString(d, "CHANNELS", x) < 0) |
|
2235 goto error; |
|
2236 Py_DECREF(x); |
|
2237 #endif |
|
2238 #ifdef AL_CHAR_ELEM |
|
2239 x = PyInt_FromLong((long) AL_CHAR_ELEM); |
|
2240 if (x == NULL || PyDict_SetItemString(d, "CHAR_ELEM", x) < 0) |
|
2241 goto error; |
|
2242 Py_DECREF(x); |
|
2243 #endif |
|
2244 #ifdef AL_CLOCK_GEN |
|
2245 x = PyInt_FromLong((long) AL_CLOCK_GEN); |
|
2246 if (x == NULL || PyDict_SetItemString(d, "CLOCK_GEN", x) < 0) |
|
2247 goto error; |
|
2248 Py_DECREF(x); |
|
2249 #endif |
|
2250 #ifdef AL_CLOCKGEN_TYPE |
|
2251 x = PyInt_FromLong((long) AL_CLOCKGEN_TYPE); |
|
2252 if (x == NULL || PyDict_SetItemString(d, "CLOCKGEN_TYPE", x) < 0) |
|
2253 goto error; |
|
2254 Py_DECREF(x); |
|
2255 #endif |
|
2256 #ifdef AL_CONNECT |
|
2257 x = PyInt_FromLong((long) AL_CONNECT); |
|
2258 if (x == NULL || PyDict_SetItemString(d, "CONNECT", x) < 0) |
|
2259 goto error; |
|
2260 Py_DECREF(x); |
|
2261 #endif |
|
2262 #ifdef AL_CONNECTION_TYPE |
|
2263 x = PyInt_FromLong((long) AL_CONNECTION_TYPE); |
|
2264 if (x == NULL || PyDict_SetItemString(d, "CONNECTION_TYPE", x) < 0) |
|
2265 goto error; |
|
2266 Py_DECREF(x); |
|
2267 #endif |
|
2268 #ifdef AL_CONNECTIONS |
|
2269 x = PyInt_FromLong((long) AL_CONNECTIONS); |
|
2270 if (x == NULL || PyDict_SetItemString(d, "CONNECTIONS", x) < 0) |
|
2271 goto error; |
|
2272 Py_DECREF(x); |
|
2273 #endif |
|
2274 #ifdef AL_CRYSTAL_MCLK_TYPE |
|
2275 x = PyInt_FromLong((long) AL_CRYSTAL_MCLK_TYPE); |
|
2276 if (x == NULL || PyDict_SetItemString(d, "CRYSTAL_MCLK_TYPE", x) < 0) |
|
2277 goto error; |
|
2278 Py_DECREF(x); |
|
2279 #endif |
|
2280 #ifdef AL_DEFAULT_DEVICE |
|
2281 x = PyInt_FromLong((long) AL_DEFAULT_DEVICE); |
|
2282 if (x == NULL || PyDict_SetItemString(d, "DEFAULT_DEVICE", x) < 0) |
|
2283 goto error; |
|
2284 Py_DECREF(x); |
|
2285 #endif |
|
2286 #ifdef AL_DEFAULT_INPUT |
|
2287 x = PyInt_FromLong((long) AL_DEFAULT_INPUT); |
|
2288 if (x == NULL || PyDict_SetItemString(d, "DEFAULT_INPUT", x) < 0) |
|
2289 goto error; |
|
2290 Py_DECREF(x); |
|
2291 #endif |
|
2292 #ifdef AL_DEFAULT_OUTPUT |
|
2293 x = PyInt_FromLong((long) AL_DEFAULT_OUTPUT); |
|
2294 if (x == NULL || PyDict_SetItemString(d, "DEFAULT_OUTPUT", x) < 0) |
|
2295 goto error; |
|
2296 Py_DECREF(x); |
|
2297 #endif |
|
2298 #ifdef AL_DEST |
|
2299 x = PyInt_FromLong((long) AL_DEST); |
|
2300 if (x == NULL || PyDict_SetItemString(d, "DEST", x) < 0) |
|
2301 goto error; |
|
2302 Py_DECREF(x); |
|
2303 #endif |
|
2304 #ifdef AL_DEVICE_TYPE |
|
2305 x = PyInt_FromLong((long) AL_DEVICE_TYPE); |
|
2306 if (x == NULL || PyDict_SetItemString(d, "DEVICE_TYPE", x) < 0) |
|
2307 goto error; |
|
2308 Py_DECREF(x); |
|
2309 #endif |
|
2310 #ifdef AL_DEVICES |
|
2311 x = PyInt_FromLong((long) AL_DEVICES); |
|
2312 if (x == NULL || PyDict_SetItemString(d, "DEVICES", x) < 0) |
|
2313 goto error; |
|
2314 Py_DECREF(x); |
|
2315 #endif |
|
2316 #ifdef AL_DIGITAL_IF_TYPE |
|
2317 x = PyInt_FromLong((long) AL_DIGITAL_IF_TYPE); |
|
2318 if (x == NULL || PyDict_SetItemString(d, "DIGITAL_IF_TYPE", x) < 0) |
|
2319 goto error; |
|
2320 Py_DECREF(x); |
|
2321 #endif |
|
2322 #ifdef AL_DIGITAL_INPUT_RATE |
|
2323 x = PyInt_FromLong((long) AL_DIGITAL_INPUT_RATE); |
|
2324 if (x == NULL || PyDict_SetItemString(d, "DIGITAL_INPUT_RATE", x) < 0) |
|
2325 goto error; |
|
2326 Py_DECREF(x); |
|
2327 #endif |
|
2328 #ifdef AL_DISCONNECT |
|
2329 x = PyInt_FromLong((long) AL_DISCONNECT); |
|
2330 if (x == NULL || PyDict_SetItemString(d, "DISCONNECT", x) < 0) |
|
2331 goto error; |
|
2332 Py_DECREF(x); |
|
2333 #endif |
|
2334 #ifdef AL_ENUM_ELEM |
|
2335 x = PyInt_FromLong((long) AL_ENUM_ELEM); |
|
2336 if (x == NULL || PyDict_SetItemString(d, "ENUM_ELEM", x) < 0) |
|
2337 goto error; |
|
2338 Py_DECREF(x); |
|
2339 #endif |
|
2340 #ifdef AL_ENUM_VALUE |
|
2341 x = PyInt_FromLong((long) AL_ENUM_VALUE); |
|
2342 if (x == NULL || PyDict_SetItemString(d, "ENUM_VALUE", x) < 0) |
|
2343 goto error; |
|
2344 Py_DECREF(x); |
|
2345 #endif |
|
2346 #ifdef AL_ERROR_INPUT_OVERFLOW |
|
2347 x = PyInt_FromLong((long) AL_ERROR_INPUT_OVERFLOW); |
|
2348 if (x == NULL || PyDict_SetItemString(d, "ERROR_INPUT_OVERFLOW", x) < 0) |
|
2349 goto error; |
|
2350 Py_DECREF(x); |
|
2351 #endif |
|
2352 #ifdef AL_ERROR_LENGTH |
|
2353 x = PyInt_FromLong((long) AL_ERROR_LENGTH); |
|
2354 if (x == NULL || PyDict_SetItemString(d, "ERROR_LENGTH", x) < 0) |
|
2355 goto error; |
|
2356 Py_DECREF(x); |
|
2357 #endif |
|
2358 #ifdef AL_ERROR_LOCATION_LSP |
|
2359 x = PyInt_FromLong((long) AL_ERROR_LOCATION_LSP); |
|
2360 if (x == NULL || PyDict_SetItemString(d, "ERROR_LOCATION_LSP", x) < 0) |
|
2361 goto error; |
|
2362 Py_DECREF(x); |
|
2363 #endif |
|
2364 #ifdef AL_ERROR_LOCATION_MSP |
|
2365 x = PyInt_FromLong((long) AL_ERROR_LOCATION_MSP); |
|
2366 if (x == NULL || PyDict_SetItemString(d, "ERROR_LOCATION_MSP", x) < 0) |
|
2367 goto error; |
|
2368 Py_DECREF(x); |
|
2369 #endif |
|
2370 #ifdef AL_ERROR_NUMBER |
|
2371 x = PyInt_FromLong((long) AL_ERROR_NUMBER); |
|
2372 if (x == NULL || PyDict_SetItemString(d, "ERROR_NUMBER", x) < 0) |
|
2373 goto error; |
|
2374 Py_DECREF(x); |
|
2375 #endif |
|
2376 #ifdef AL_ERROR_OUTPUT_UNDERFLOW |
|
2377 x = PyInt_FromLong((long) AL_ERROR_OUTPUT_UNDERFLOW); |
|
2378 if (x == NULL || PyDict_SetItemString(d, "ERROR_OUTPUT_UNDERFLOW", x) < 0) |
|
2379 goto error; |
|
2380 Py_DECREF(x); |
|
2381 #endif |
|
2382 #ifdef AL_ERROR_TYPE |
|
2383 x = PyInt_FromLong((long) AL_ERROR_TYPE); |
|
2384 if (x == NULL || PyDict_SetItemString(d, "ERROR_TYPE", x) < 0) |
|
2385 goto error; |
|
2386 Py_DECREF(x); |
|
2387 #endif |
|
2388 #ifdef AL_FIXED_ELEM |
|
2389 x = PyInt_FromLong((long) AL_FIXED_ELEM); |
|
2390 if (x == NULL || PyDict_SetItemString(d, "FIXED_ELEM", x) < 0) |
|
2391 goto error; |
|
2392 Py_DECREF(x); |
|
2393 #endif |
|
2394 #ifdef AL_FIXED_MCLK_TYPE |
|
2395 x = PyInt_FromLong((long) AL_FIXED_MCLK_TYPE); |
|
2396 if (x == NULL || PyDict_SetItemString(d, "FIXED_MCLK_TYPE", x) < 0) |
|
2397 goto error; |
|
2398 Py_DECREF(x); |
|
2399 #endif |
|
2400 #ifdef AL_GAIN |
|
2401 x = PyInt_FromLong((long) AL_GAIN); |
|
2402 if (x == NULL || PyDict_SetItemString(d, "GAIN", x) < 0) |
|
2403 goto error; |
|
2404 Py_DECREF(x); |
|
2405 #endif |
|
2406 #ifdef AL_GAIN_REF |
|
2407 x = PyInt_FromLong((long) AL_GAIN_REF); |
|
2408 if (x == NULL || PyDict_SetItemString(d, "GAIN_REF", x) < 0) |
|
2409 goto error; |
|
2410 Py_DECREF(x); |
|
2411 #endif |
|
2412 #ifdef AL_HRB_TYPE |
|
2413 x = PyInt_FromLong((long) AL_HRB_TYPE); |
|
2414 if (x == NULL || PyDict_SetItemString(d, "HRB_TYPE", x) < 0) |
|
2415 goto error; |
|
2416 Py_DECREF(x); |
|
2417 #endif |
|
2418 #ifdef AL_INPUT_COUNT |
|
2419 x = PyInt_FromLong((long) AL_INPUT_COUNT); |
|
2420 if (x == NULL || PyDict_SetItemString(d, "INPUT_COUNT", x) < 0) |
|
2421 goto error; |
|
2422 Py_DECREF(x); |
|
2423 #endif |
|
2424 #ifdef AL_INPUT_DEVICE_TYPE |
|
2425 x = PyInt_FromLong((long) AL_INPUT_DEVICE_TYPE); |
|
2426 if (x == NULL || PyDict_SetItemString(d, "INPUT_DEVICE_TYPE", x) < 0) |
|
2427 goto error; |
|
2428 Py_DECREF(x); |
|
2429 #endif |
|
2430 #ifdef AL_INPUT_DIGITAL |
|
2431 x = PyInt_FromLong((long) AL_INPUT_DIGITAL); |
|
2432 if (x == NULL || PyDict_SetItemString(d, "INPUT_DIGITAL", x) < 0) |
|
2433 goto error; |
|
2434 Py_DECREF(x); |
|
2435 #endif |
|
2436 #ifdef AL_INPUT_HRB_TYPE |
|
2437 x = PyInt_FromLong((long) AL_INPUT_HRB_TYPE); |
|
2438 if (x == NULL || PyDict_SetItemString(d, "INPUT_HRB_TYPE", x) < 0) |
|
2439 goto error; |
|
2440 Py_DECREF(x); |
|
2441 #endif |
|
2442 #ifdef AL_INPUT_LINE |
|
2443 x = PyInt_FromLong((long) AL_INPUT_LINE); |
|
2444 if (x == NULL || PyDict_SetItemString(d, "INPUT_LINE", x) < 0) |
|
2445 goto error; |
|
2446 Py_DECREF(x); |
|
2447 #endif |
|
2448 #ifdef AL_INPUT_MIC |
|
2449 x = PyInt_FromLong((long) AL_INPUT_MIC); |
|
2450 if (x == NULL || PyDict_SetItemString(d, "INPUT_MIC", x) < 0) |
|
2451 goto error; |
|
2452 Py_DECREF(x); |
|
2453 #endif |
|
2454 #ifdef AL_INPUT_PORT_TYPE |
|
2455 x = PyInt_FromLong((long) AL_INPUT_PORT_TYPE); |
|
2456 if (x == NULL || PyDict_SetItemString(d, "INPUT_PORT_TYPE", x) < 0) |
|
2457 goto error; |
|
2458 Py_DECREF(x); |
|
2459 #endif |
|
2460 #ifdef AL_INPUT_RATE |
|
2461 x = PyInt_FromLong((long) AL_INPUT_RATE); |
|
2462 if (x == NULL || PyDict_SetItemString(d, "INPUT_RATE", x) < 0) |
|
2463 goto error; |
|
2464 Py_DECREF(x); |
|
2465 #endif |
|
2466 #ifdef AL_INPUT_SOURCE |
|
2467 x = PyInt_FromLong((long) AL_INPUT_SOURCE); |
|
2468 if (x == NULL || PyDict_SetItemString(d, "INPUT_SOURCE", x) < 0) |
|
2469 goto error; |
|
2470 Py_DECREF(x); |
|
2471 #endif |
|
2472 #ifdef AL_INT32_ELEM |
|
2473 x = PyInt_FromLong((long) AL_INT32_ELEM); |
|
2474 if (x == NULL || PyDict_SetItemString(d, "INT32_ELEM", x) < 0) |
|
2475 goto error; |
|
2476 Py_DECREF(x); |
|
2477 #endif |
|
2478 #ifdef AL_INT64_ELEM |
|
2479 x = PyInt_FromLong((long) AL_INT64_ELEM); |
|
2480 if (x == NULL || PyDict_SetItemString(d, "INT64_ELEM", x) < 0) |
|
2481 goto error; |
|
2482 Py_DECREF(x); |
|
2483 #endif |
|
2484 #ifdef AL_INTERFACE |
|
2485 x = PyInt_FromLong((long) AL_INTERFACE); |
|
2486 if (x == NULL || PyDict_SetItemString(d, "INTERFACE", x) < 0) |
|
2487 goto error; |
|
2488 Py_DECREF(x); |
|
2489 #endif |
|
2490 #ifdef AL_INTERFACE_TYPE |
|
2491 x = PyInt_FromLong((long) AL_INTERFACE_TYPE); |
|
2492 if (x == NULL || PyDict_SetItemString(d, "INTERFACE_TYPE", x) < 0) |
|
2493 goto error; |
|
2494 Py_DECREF(x); |
|
2495 #endif |
|
2496 #ifdef AL_INVALID_PARAM |
|
2497 x = PyInt_FromLong((long) AL_INVALID_PARAM); |
|
2498 if (x == NULL || PyDict_SetItemString(d, "INVALID_PARAM", x) < 0) |
|
2499 goto error; |
|
2500 Py_DECREF(x); |
|
2501 #endif |
|
2502 #ifdef AL_INVALID_VALUE |
|
2503 x = PyInt_FromLong((long) AL_INVALID_VALUE); |
|
2504 if (x == NULL || PyDict_SetItemString(d, "INVALID_VALUE", x) < 0) |
|
2505 goto error; |
|
2506 Py_DECREF(x); |
|
2507 #endif |
|
2508 #ifdef AL_JITTER |
|
2509 x = PyInt_FromLong((long) AL_JITTER); |
|
2510 if (x == NULL || PyDict_SetItemString(d, "JITTER", x) < 0) |
|
2511 goto error; |
|
2512 Py_DECREF(x); |
|
2513 #endif |
|
2514 #ifdef AL_LABEL |
|
2515 x = PyInt_FromLong((long) AL_LABEL); |
|
2516 if (x == NULL || PyDict_SetItemString(d, "LABEL", x) < 0) |
|
2517 goto error; |
|
2518 Py_DECREF(x); |
|
2519 #endif |
|
2520 #ifdef AL_LEFT_INPUT_ATTEN |
|
2521 x = PyInt_FromLong((long) AL_LEFT_INPUT_ATTEN); |
|
2522 if (x == NULL || PyDict_SetItemString(d, "LEFT_INPUT_ATTEN", x) < 0) |
|
2523 goto error; |
|
2524 Py_DECREF(x); |
|
2525 #endif |
|
2526 #ifdef AL_LEFT_MONITOR_ATTEN |
|
2527 x = PyInt_FromLong((long) AL_LEFT_MONITOR_ATTEN); |
|
2528 if (x == NULL || PyDict_SetItemString(d, "LEFT_MONITOR_ATTEN", x) < 0) |
|
2529 goto error; |
|
2530 Py_DECREF(x); |
|
2531 #endif |
|
2532 #ifdef AL_LEFT_SPEAKER_GAIN |
|
2533 x = PyInt_FromLong((long) AL_LEFT_SPEAKER_GAIN); |
|
2534 if (x == NULL || PyDict_SetItemString(d, "LEFT_SPEAKER_GAIN", x) < 0) |
|
2535 goto error; |
|
2536 Py_DECREF(x); |
|
2537 #endif |
|
2538 #ifdef AL_LEFT1_INPUT_ATTEN |
|
2539 x = PyInt_FromLong((long) AL_LEFT1_INPUT_ATTEN); |
|
2540 if (x == NULL || PyDict_SetItemString(d, "LEFT1_INPUT_ATTEN", x) < 0) |
|
2541 goto error; |
|
2542 Py_DECREF(x); |
|
2543 #endif |
|
2544 #ifdef AL_LEFT2_INPUT_ATTEN |
|
2545 x = PyInt_FromLong((long) AL_LEFT2_INPUT_ATTEN); |
|
2546 if (x == NULL || PyDict_SetItemString(d, "LEFT2_INPUT_ATTEN", x) < 0) |
|
2547 goto error; |
|
2548 Py_DECREF(x); |
|
2549 #endif |
|
2550 #ifdef AL_LINE_IF_TYPE |
|
2551 x = PyInt_FromLong((long) AL_LINE_IF_TYPE); |
|
2552 if (x == NULL || PyDict_SetItemString(d, "LINE_IF_TYPE", x) < 0) |
|
2553 goto error; |
|
2554 Py_DECREF(x); |
|
2555 #endif |
|
2556 #ifdef AL_LOCKED |
|
2557 x = PyInt_FromLong((long) AL_LOCKED); |
|
2558 if (x == NULL || PyDict_SetItemString(d, "LOCKED", x) < 0) |
|
2559 goto error; |
|
2560 Py_DECREF(x); |
|
2561 #endif |
|
2562 #ifdef AL_MASTER_CLOCK |
|
2563 x = PyInt_FromLong((long) AL_MASTER_CLOCK); |
|
2564 if (x == NULL || PyDict_SetItemString(d, "MASTER_CLOCK", x) < 0) |
|
2565 goto error; |
|
2566 Py_DECREF(x); |
|
2567 #endif |
|
2568 #ifdef AL_MATRIX_VAL |
|
2569 x = PyInt_FromLong((long) AL_MATRIX_VAL); |
|
2570 if (x == NULL || PyDict_SetItemString(d, "MATRIX_VAL", x) < 0) |
|
2571 goto error; |
|
2572 Py_DECREF(x); |
|
2573 #endif |
|
2574 #ifdef AL_MAX_ERROR |
|
2575 x = PyInt_FromLong((long) AL_MAX_ERROR); |
|
2576 if (x == NULL || PyDict_SetItemString(d, "MAX_ERROR", x) < 0) |
|
2577 goto error; |
|
2578 Py_DECREF(x); |
|
2579 #endif |
|
2580 #ifdef AL_MAX_EVENT_PARAM |
|
2581 x = PyInt_FromLong((long) AL_MAX_EVENT_PARAM); |
|
2582 if (x == NULL || PyDict_SetItemString(d, "MAX_EVENT_PARAM", x) < 0) |
|
2583 goto error; |
|
2584 Py_DECREF(x); |
|
2585 #endif |
|
2586 #ifdef AL_MAX_PBUFSIZE |
|
2587 x = PyInt_FromLong((long) AL_MAX_PBUFSIZE); |
|
2588 if (x == NULL || PyDict_SetItemString(d, "MAX_PBUFSIZE", x) < 0) |
|
2589 goto error; |
|
2590 Py_DECREF(x); |
|
2591 #endif |
|
2592 #ifdef AL_MAX_PORTS |
|
2593 x = PyInt_FromLong((long) AL_MAX_PORTS); |
|
2594 if (x == NULL || PyDict_SetItemString(d, "MAX_PORTS", x) < 0) |
|
2595 goto error; |
|
2596 Py_DECREF(x); |
|
2597 #endif |
|
2598 #ifdef AL_MAX_RESOURCE_ID |
|
2599 x = PyInt_FromLong((long) AL_MAX_RESOURCE_ID); |
|
2600 if (x == NULL || PyDict_SetItemString(d, "MAX_RESOURCE_ID", x) < 0) |
|
2601 goto error; |
|
2602 Py_DECREF(x); |
|
2603 #endif |
|
2604 #ifdef AL_MAX_SETSIZE |
|
2605 x = PyInt_FromLong((long) AL_MAX_SETSIZE); |
|
2606 if (x == NULL || PyDict_SetItemString(d, "MAX_SETSIZE", x) < 0) |
|
2607 goto error; |
|
2608 Py_DECREF(x); |
|
2609 #endif |
|
2610 #ifdef AL_MAX_STRLEN |
|
2611 x = PyInt_FromLong((long) AL_MAX_STRLEN); |
|
2612 if (x == NULL || PyDict_SetItemString(d, "MAX_STRLEN", x) < 0) |
|
2613 goto error; |
|
2614 Py_DECREF(x); |
|
2615 #endif |
|
2616 #ifdef AL_MCLK_TYPE |
|
2617 x = PyInt_FromLong((long) AL_MCLK_TYPE); |
|
2618 if (x == NULL || PyDict_SetItemString(d, "MCLK_TYPE", x) < 0) |
|
2619 goto error; |
|
2620 Py_DECREF(x); |
|
2621 #endif |
|
2622 #ifdef AL_MIC_IF_TYPE |
|
2623 x = PyInt_FromLong((long) AL_MIC_IF_TYPE); |
|
2624 if (x == NULL || PyDict_SetItemString(d, "MIC_IF_TYPE", x) < 0) |
|
2625 goto error; |
|
2626 Py_DECREF(x); |
|
2627 #endif |
|
2628 #ifdef AL_MONITOR_CTL |
|
2629 x = PyInt_FromLong((long) AL_MONITOR_CTL); |
|
2630 if (x == NULL || PyDict_SetItemString(d, "MONITOR_CTL", x) < 0) |
|
2631 goto error; |
|
2632 Py_DECREF(x); |
|
2633 #endif |
|
2634 #ifdef AL_MONITOR_OFF |
|
2635 x = PyInt_FromLong((long) AL_MONITOR_OFF); |
|
2636 if (x == NULL || PyDict_SetItemString(d, "MONITOR_OFF", x) < 0) |
|
2637 goto error; |
|
2638 Py_DECREF(x); |
|
2639 #endif |
|
2640 #ifdef AL_MONITOR_ON |
|
2641 x = PyInt_FromLong((long) AL_MONITOR_ON); |
|
2642 if (x == NULL || PyDict_SetItemString(d, "MONITOR_ON", x) < 0) |
|
2643 goto error; |
|
2644 Py_DECREF(x); |
|
2645 #endif |
|
2646 #ifdef AL_MONO |
|
2647 x = PyInt_FromLong((long) AL_MONO); |
|
2648 if (x == NULL || PyDict_SetItemString(d, "MONO", x) < 0) |
|
2649 goto error; |
|
2650 Py_DECREF(x); |
|
2651 #endif |
|
2652 #ifdef AL_MUTE |
|
2653 x = PyInt_FromLong((long) AL_MUTE); |
|
2654 if (x == NULL || PyDict_SetItemString(d, "MUTE", x) < 0) |
|
2655 goto error; |
|
2656 Py_DECREF(x); |
|
2657 #endif |
|
2658 #ifdef AL_NAME |
|
2659 x = PyInt_FromLong((long) AL_NAME); |
|
2660 if (x == NULL || PyDict_SetItemString(d, "NAME", x) < 0) |
|
2661 goto error; |
|
2662 Py_DECREF(x); |
|
2663 #endif |
|
2664 #ifdef AL_NEG_INFINITY |
|
2665 x = PyInt_FromLong((long) AL_NEG_INFINITY); |
|
2666 if (x == NULL || PyDict_SetItemString(d, "NEG_INFINITY", x) < 0) |
|
2667 goto error; |
|
2668 Py_DECREF(x); |
|
2669 #endif |
|
2670 #ifdef AL_NEG_INFINITY_BIT |
|
2671 x = PyInt_FromLong((long) AL_NEG_INFINITY_BIT); |
|
2672 if (x == NULL || PyDict_SetItemString(d, "NEG_INFINITY_BIT", x) < 0) |
|
2673 goto error; |
|
2674 Py_DECREF(x); |
|
2675 #endif |
|
2676 #ifdef AL_NO_CHANGE |
|
2677 x = PyInt_FromLong((long) AL_NO_CHANGE); |
|
2678 if (x == NULL || PyDict_SetItemString(d, "NO_CHANGE", x) < 0) |
|
2679 goto error; |
|
2680 Py_DECREF(x); |
|
2681 #endif |
|
2682 #ifdef AL_NO_CHANGE_BIT |
|
2683 x = PyInt_FromLong((long) AL_NO_CHANGE_BIT); |
|
2684 if (x == NULL || PyDict_SetItemString(d, "NO_CHANGE_BIT", x) < 0) |
|
2685 goto error; |
|
2686 Py_DECREF(x); |
|
2687 #endif |
|
2688 #ifdef AL_NO_ELEM |
|
2689 x = PyInt_FromLong((long) AL_NO_ELEM); |
|
2690 if (x == NULL || PyDict_SetItemString(d, "NO_ELEM", x) < 0) |
|
2691 goto error; |
|
2692 Py_DECREF(x); |
|
2693 #endif |
|
2694 #ifdef AL_NO_ERRORS |
|
2695 x = PyInt_FromLong((long) AL_NO_ERRORS); |
|
2696 if (x == NULL || PyDict_SetItemString(d, "NO_ERRORS", x) < 0) |
|
2697 goto error; |
|
2698 Py_DECREF(x); |
|
2699 #endif |
|
2700 #ifdef AL_NO_OP |
|
2701 x = PyInt_FromLong((long) AL_NO_OP); |
|
2702 if (x == NULL || PyDict_SetItemString(d, "NO_OP", x) < 0) |
|
2703 goto error; |
|
2704 Py_DECREF(x); |
|
2705 #endif |
|
2706 #ifdef AL_NO_VAL |
|
2707 x = PyInt_FromLong((long) AL_NO_VAL); |
|
2708 if (x == NULL || PyDict_SetItemString(d, "NO_VAL", x) < 0) |
|
2709 goto error; |
|
2710 Py_DECREF(x); |
|
2711 #endif |
|
2712 #ifdef AL_NULL_INTERFACE |
|
2713 x = PyInt_FromLong((long) AL_NULL_INTERFACE); |
|
2714 if (x == NULL || PyDict_SetItemString(d, "NULL_INTERFACE", x) < 0) |
|
2715 goto error; |
|
2716 Py_DECREF(x); |
|
2717 #endif |
|
2718 #ifdef AL_NULL_RESOURCE |
|
2719 x = PyInt_FromLong((long) AL_NULL_RESOURCE); |
|
2720 if (x == NULL || PyDict_SetItemString(d, "NULL_RESOURCE", x) < 0) |
|
2721 goto error; |
|
2722 Py_DECREF(x); |
|
2723 #endif |
|
2724 #ifdef AL_OPTICAL_IF_TYPE |
|
2725 x = PyInt_FromLong((long) AL_OPTICAL_IF_TYPE); |
|
2726 if (x == NULL || PyDict_SetItemString(d, "OPTICAL_IF_TYPE", x) < 0) |
|
2727 goto error; |
|
2728 Py_DECREF(x); |
|
2729 #endif |
|
2730 #ifdef AL_OUTPUT_COUNT |
|
2731 x = PyInt_FromLong((long) AL_OUTPUT_COUNT); |
|
2732 if (x == NULL || PyDict_SetItemString(d, "OUTPUT_COUNT", x) < 0) |
|
2733 goto error; |
|
2734 Py_DECREF(x); |
|
2735 #endif |
|
2736 #ifdef AL_OUTPUT_DEVICE_TYPE |
|
2737 x = PyInt_FromLong((long) AL_OUTPUT_DEVICE_TYPE); |
|
2738 if (x == NULL || PyDict_SetItemString(d, "OUTPUT_DEVICE_TYPE", x) < 0) |
|
2739 goto error; |
|
2740 Py_DECREF(x); |
|
2741 #endif |
|
2742 #ifdef AL_OUTPUT_HRB_TYPE |
|
2743 x = PyInt_FromLong((long) AL_OUTPUT_HRB_TYPE); |
|
2744 if (x == NULL || PyDict_SetItemString(d, "OUTPUT_HRB_TYPE", x) < 0) |
|
2745 goto error; |
|
2746 Py_DECREF(x); |
|
2747 #endif |
|
2748 #ifdef AL_OUTPUT_PORT_TYPE |
|
2749 x = PyInt_FromLong((long) AL_OUTPUT_PORT_TYPE); |
|
2750 if (x == NULL || PyDict_SetItemString(d, "OUTPUT_PORT_TYPE", x) < 0) |
|
2751 goto error; |
|
2752 Py_DECREF(x); |
|
2753 #endif |
|
2754 #ifdef AL_OUTPUT_RATE |
|
2755 x = PyInt_FromLong((long) AL_OUTPUT_RATE); |
|
2756 if (x == NULL || PyDict_SetItemString(d, "OUTPUT_RATE", x) < 0) |
|
2757 goto error; |
|
2758 Py_DECREF(x); |
|
2759 #endif |
|
2760 #ifdef AL_PARAM_BIT |
|
2761 x = PyInt_FromLong((long) AL_PARAM_BIT); |
|
2762 if (x == NULL || PyDict_SetItemString(d, "PARAM_BIT", x) < 0) |
|
2763 goto error; |
|
2764 Py_DECREF(x); |
|
2765 #endif |
|
2766 #ifdef AL_PARAMS |
|
2767 x = PyInt_FromLong((long) AL_PARAMS); |
|
2768 if (x == NULL || PyDict_SetItemString(d, "PARAMS", x) < 0) |
|
2769 goto error; |
|
2770 Py_DECREF(x); |
|
2771 #endif |
|
2772 #ifdef AL_PORT_COUNT |
|
2773 x = PyInt_FromLong((long) AL_PORT_COUNT); |
|
2774 if (x == NULL || PyDict_SetItemString(d, "PORT_COUNT", x) < 0) |
|
2775 goto error; |
|
2776 Py_DECREF(x); |
|
2777 #endif |
|
2778 #ifdef AL_PORT_TYPE |
|
2779 x = PyInt_FromLong((long) AL_PORT_TYPE); |
|
2780 if (x == NULL || PyDict_SetItemString(d, "PORT_TYPE", x) < 0) |
|
2781 goto error; |
|
2782 Py_DECREF(x); |
|
2783 #endif |
|
2784 #ifdef AL_PORTS |
|
2785 x = PyInt_FromLong((long) AL_PORTS); |
|
2786 if (x == NULL || PyDict_SetItemString(d, "PORTS", x) < 0) |
|
2787 goto error; |
|
2788 Py_DECREF(x); |
|
2789 #endif |
|
2790 #ifdef AL_PORTSTYLE_DIRECT |
|
2791 x = PyInt_FromLong((long) AL_PORTSTYLE_DIRECT); |
|
2792 if (x == NULL || PyDict_SetItemString(d, "PORTSTYLE_DIRECT", x) < 0) |
|
2793 goto error; |
|
2794 Py_DECREF(x); |
|
2795 #endif |
|
2796 #ifdef AL_PORTSTYLE_SERIAL |
|
2797 x = PyInt_FromLong((long) AL_PORTSTYLE_SERIAL); |
|
2798 if (x == NULL || PyDict_SetItemString(d, "PORTSTYLE_SERIAL", x) < 0) |
|
2799 goto error; |
|
2800 Py_DECREF(x); |
|
2801 #endif |
|
2802 #ifdef AL_PRINT_ERRORS |
|
2803 x = PyInt_FromLong((long) AL_PRINT_ERRORS); |
|
2804 if (x == NULL || PyDict_SetItemString(d, "PRINT_ERRORS", x) < 0) |
|
2805 goto error; |
|
2806 Py_DECREF(x); |
|
2807 #endif |
|
2808 #ifdef AL_PTR_ELEM |
|
2809 x = PyInt_FromLong((long) AL_PTR_ELEM); |
|
2810 if (x == NULL || PyDict_SetItemString(d, "PTR_ELEM", x) < 0) |
|
2811 goto error; |
|
2812 Py_DECREF(x); |
|
2813 #endif |
|
2814 #ifdef AL_RANGE_VALUE |
|
2815 x = PyInt_FromLong((long) AL_RANGE_VALUE); |
|
2816 if (x == NULL || PyDict_SetItemString(d, "RANGE_VALUE", x) < 0) |
|
2817 goto error; |
|
2818 Py_DECREF(x); |
|
2819 #endif |
|
2820 #ifdef AL_RATE |
|
2821 x = PyInt_FromLong((long) AL_RATE); |
|
2822 if (x == NULL || PyDict_SetItemString(d, "RATE", x) < 0) |
|
2823 goto error; |
|
2824 Py_DECREF(x); |
|
2825 #endif |
|
2826 #ifdef AL_RATE_11025 |
|
2827 x = PyInt_FromLong((long) AL_RATE_11025); |
|
2828 if (x == NULL || PyDict_SetItemString(d, "RATE_11025", x) < 0) |
|
2829 goto error; |
|
2830 Py_DECREF(x); |
|
2831 #endif |
|
2832 #ifdef AL_RATE_16000 |
|
2833 x = PyInt_FromLong((long) AL_RATE_16000); |
|
2834 if (x == NULL || PyDict_SetItemString(d, "RATE_16000", x) < 0) |
|
2835 goto error; |
|
2836 Py_DECREF(x); |
|
2837 #endif |
|
2838 #ifdef AL_RATE_22050 |
|
2839 x = PyInt_FromLong((long) AL_RATE_22050); |
|
2840 if (x == NULL || PyDict_SetItemString(d, "RATE_22050", x) < 0) |
|
2841 goto error; |
|
2842 Py_DECREF(x); |
|
2843 #endif |
|
2844 #ifdef AL_RATE_32000 |
|
2845 x = PyInt_FromLong((long) AL_RATE_32000); |
|
2846 if (x == NULL || PyDict_SetItemString(d, "RATE_32000", x) < 0) |
|
2847 goto error; |
|
2848 Py_DECREF(x); |
|
2849 #endif |
|
2850 #ifdef AL_RATE_44100 |
|
2851 x = PyInt_FromLong((long) AL_RATE_44100); |
|
2852 if (x == NULL || PyDict_SetItemString(d, "RATE_44100", x) < 0) |
|
2853 goto error; |
|
2854 Py_DECREF(x); |
|
2855 #endif |
|
2856 #ifdef AL_RATE_48000 |
|
2857 x = PyInt_FromLong((long) AL_RATE_48000); |
|
2858 if (x == NULL || PyDict_SetItemString(d, "RATE_48000", x) < 0) |
|
2859 goto error; |
|
2860 Py_DECREF(x); |
|
2861 #endif |
|
2862 #ifdef AL_RATE_8000 |
|
2863 x = PyInt_FromLong((long) AL_RATE_8000); |
|
2864 if (x == NULL || PyDict_SetItemString(d, "RATE_8000", x) < 0) |
|
2865 goto error; |
|
2866 Py_DECREF(x); |
|
2867 #endif |
|
2868 #ifdef AL_RATE_AES_1 |
|
2869 x = PyInt_FromLong((long) AL_RATE_AES_1); |
|
2870 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_1", x) < 0) |
|
2871 goto error; |
|
2872 Py_DECREF(x); |
|
2873 #endif |
|
2874 #ifdef AL_RATE_AES_1s |
|
2875 x = PyInt_FromLong((long) AL_RATE_AES_1s); |
|
2876 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_1s", x) < 0) |
|
2877 goto error; |
|
2878 Py_DECREF(x); |
|
2879 #endif |
|
2880 #ifdef AL_RATE_AES_2 |
|
2881 x = PyInt_FromLong((long) AL_RATE_AES_2); |
|
2882 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_2", x) < 0) |
|
2883 goto error; |
|
2884 Py_DECREF(x); |
|
2885 #endif |
|
2886 #ifdef AL_RATE_AES_3 |
|
2887 x = PyInt_FromLong((long) AL_RATE_AES_3); |
|
2888 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_3", x) < 0) |
|
2889 goto error; |
|
2890 Py_DECREF(x); |
|
2891 #endif |
|
2892 #ifdef AL_RATE_AES_4 |
|
2893 x = PyInt_FromLong((long) AL_RATE_AES_4); |
|
2894 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_4", x) < 0) |
|
2895 goto error; |
|
2896 Py_DECREF(x); |
|
2897 #endif |
|
2898 #ifdef AL_RATE_AES_6 |
|
2899 x = PyInt_FromLong((long) AL_RATE_AES_6); |
|
2900 if (x == NULL || PyDict_SetItemString(d, "RATE_AES_6", x) < 0) |
|
2901 goto error; |
|
2902 Py_DECREF(x); |
|
2903 #endif |
|
2904 #ifdef AL_RATE_FRACTION_D |
|
2905 x = PyInt_FromLong((long) AL_RATE_FRACTION_D); |
|
2906 if (x == NULL || PyDict_SetItemString(d, "RATE_FRACTION_D", x) < 0) |
|
2907 goto error; |
|
2908 Py_DECREF(x); |
|
2909 #endif |
|
2910 #ifdef AL_RATE_FRACTION_N |
|
2911 x = PyInt_FromLong((long) AL_RATE_FRACTION_N); |
|
2912 if (x == NULL || PyDict_SetItemString(d, "RATE_FRACTION_N", x) < 0) |
|
2913 goto error; |
|
2914 Py_DECREF(x); |
|
2915 #endif |
|
2916 #ifdef AL_RATE_INPUTRATE |
|
2917 x = PyInt_FromLong((long) AL_RATE_INPUTRATE); |
|
2918 if (x == NULL || PyDict_SetItemString(d, "RATE_INPUTRATE", x) < 0) |
|
2919 goto error; |
|
2920 Py_DECREF(x); |
|
2921 #endif |
|
2922 #ifdef AL_RATE_NO_DIGITAL_INPUT |
|
2923 x = PyInt_FromLong((long) AL_RATE_NO_DIGITAL_INPUT); |
|
2924 if (x == NULL || PyDict_SetItemString(d, "RATE_NO_DIGITAL_INPUT", x) < 0) |
|
2925 goto error; |
|
2926 Py_DECREF(x); |
|
2927 #endif |
|
2928 #ifdef AL_RATE_UNACQUIRED |
|
2929 x = PyInt_FromLong((long) AL_RATE_UNACQUIRED); |
|
2930 if (x == NULL || PyDict_SetItemString(d, "RATE_UNACQUIRED", x) < 0) |
|
2931 goto error; |
|
2932 Py_DECREF(x); |
|
2933 #endif |
|
2934 #ifdef AL_RATE_UNDEFINED |
|
2935 x = PyInt_FromLong((long) AL_RATE_UNDEFINED); |
|
2936 if (x == NULL || PyDict_SetItemString(d, "RATE_UNDEFINED", x) < 0) |
|
2937 goto error; |
|
2938 Py_DECREF(x); |
|
2939 #endif |
|
2940 #ifdef AL_REF_0DBV |
|
2941 x = PyInt_FromLong((long) AL_REF_0DBV); |
|
2942 if (x == NULL || PyDict_SetItemString(d, "REF_0DBV", x) < 0) |
|
2943 goto error; |
|
2944 Py_DECREF(x); |
|
2945 #endif |
|
2946 #ifdef AL_REF_NONE |
|
2947 x = PyInt_FromLong((long) AL_REF_NONE); |
|
2948 if (x == NULL || PyDict_SetItemString(d, "REF_NONE", x) < 0) |
|
2949 goto error; |
|
2950 Py_DECREF(x); |
|
2951 #endif |
|
2952 #ifdef AL_RESERVED1_TYPE |
|
2953 x = PyInt_FromLong((long) AL_RESERVED1_TYPE); |
|
2954 if (x == NULL || PyDict_SetItemString(d, "RESERVED1_TYPE", x) < 0) |
|
2955 goto error; |
|
2956 Py_DECREF(x); |
|
2957 #endif |
|
2958 #ifdef AL_RESERVED2_TYPE |
|
2959 x = PyInt_FromLong((long) AL_RESERVED2_TYPE); |
|
2960 if (x == NULL || PyDict_SetItemString(d, "RESERVED2_TYPE", x) < 0) |
|
2961 goto error; |
|
2962 Py_DECREF(x); |
|
2963 #endif |
|
2964 #ifdef AL_RESERVED3_TYPE |
|
2965 x = PyInt_FromLong((long) AL_RESERVED3_TYPE); |
|
2966 if (x == NULL || PyDict_SetItemString(d, "RESERVED3_TYPE", x) < 0) |
|
2967 goto error; |
|
2968 Py_DECREF(x); |
|
2969 #endif |
|
2970 #ifdef AL_RESERVED4_TYPE |
|
2971 x = PyInt_FromLong((long) AL_RESERVED4_TYPE); |
|
2972 if (x == NULL || PyDict_SetItemString(d, "RESERVED4_TYPE", x) < 0) |
|
2973 goto error; |
|
2974 Py_DECREF(x); |
|
2975 #endif |
|
2976 #ifdef AL_RESOURCE |
|
2977 x = PyInt_FromLong((long) AL_RESOURCE); |
|
2978 if (x == NULL || PyDict_SetItemString(d, "RESOURCE", x) < 0) |
|
2979 goto error; |
|
2980 Py_DECREF(x); |
|
2981 #endif |
|
2982 #ifdef AL_RESOURCE_ELEM |
|
2983 x = PyInt_FromLong((long) AL_RESOURCE_ELEM); |
|
2984 if (x == NULL || PyDict_SetItemString(d, "RESOURCE_ELEM", x) < 0) |
|
2985 goto error; |
|
2986 Py_DECREF(x); |
|
2987 #endif |
|
2988 #ifdef AL_RESOURCE_TYPE |
|
2989 x = PyInt_FromLong((long) AL_RESOURCE_TYPE); |
|
2990 if (x == NULL || PyDict_SetItemString(d, "RESOURCE_TYPE", x) < 0) |
|
2991 goto error; |
|
2992 Py_DECREF(x); |
|
2993 #endif |
|
2994 #ifdef AL_RIGHT_INPUT_ATTEN |
|
2995 x = PyInt_FromLong((long) AL_RIGHT_INPUT_ATTEN); |
|
2996 if (x == NULL || PyDict_SetItemString(d, "RIGHT_INPUT_ATTEN", x) < 0) |
|
2997 goto error; |
|
2998 Py_DECREF(x); |
|
2999 #endif |
|
3000 #ifdef AL_RIGHT_MONITOR_ATTEN |
|
3001 x = PyInt_FromLong((long) AL_RIGHT_MONITOR_ATTEN); |
|
3002 if (x == NULL || PyDict_SetItemString(d, "RIGHT_MONITOR_ATTEN", x) < 0) |
|
3003 goto error; |
|
3004 Py_DECREF(x); |
|
3005 #endif |
|
3006 #ifdef AL_RIGHT_SPEAKER_GAIN |
|
3007 x = PyInt_FromLong((long) AL_RIGHT_SPEAKER_GAIN); |
|
3008 if (x == NULL || PyDict_SetItemString(d, "RIGHT_SPEAKER_GAIN", x) < 0) |
|
3009 goto error; |
|
3010 Py_DECREF(x); |
|
3011 #endif |
|
3012 #ifdef AL_RIGHT1_INPUT_ATTEN |
|
3013 x = PyInt_FromLong((long) AL_RIGHT1_INPUT_ATTEN); |
|
3014 if (x == NULL || PyDict_SetItemString(d, "RIGHT1_INPUT_ATTEN", x) < 0) |
|
3015 goto error; |
|
3016 Py_DECREF(x); |
|
3017 #endif |
|
3018 #ifdef AL_RIGHT2_INPUT_ATTEN |
|
3019 x = PyInt_FromLong((long) AL_RIGHT2_INPUT_ATTEN); |
|
3020 if (x == NULL || PyDict_SetItemString(d, "RIGHT2_INPUT_ATTEN", x) < 0) |
|
3021 goto error; |
|
3022 Py_DECREF(x); |
|
3023 #endif |
|
3024 #ifdef AL_SAMPFMT_DOUBLE |
|
3025 x = PyInt_FromLong((long) AL_SAMPFMT_DOUBLE); |
|
3026 if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_DOUBLE", x) < 0) |
|
3027 goto error; |
|
3028 Py_DECREF(x); |
|
3029 #endif |
|
3030 #ifdef AL_SAMPFMT_FLOAT |
|
3031 x = PyInt_FromLong((long) AL_SAMPFMT_FLOAT); |
|
3032 if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_FLOAT", x) < 0) |
|
3033 goto error; |
|
3034 Py_DECREF(x); |
|
3035 #endif |
|
3036 #ifdef AL_SAMPFMT_TWOSCOMP |
|
3037 x = PyInt_FromLong((long) AL_SAMPFMT_TWOSCOMP); |
|
3038 if (x == NULL || PyDict_SetItemString(d, "SAMPFMT_TWOSCOMP", x) < 0) |
|
3039 goto error; |
|
3040 Py_DECREF(x); |
|
3041 #endif |
|
3042 #ifdef AL_SAMPLE_16 |
|
3043 x = PyInt_FromLong((long) AL_SAMPLE_16); |
|
3044 if (x == NULL || PyDict_SetItemString(d, "SAMPLE_16", x) < 0) |
|
3045 goto error; |
|
3046 Py_DECREF(x); |
|
3047 #endif |
|
3048 #ifdef AL_SAMPLE_24 |
|
3049 x = PyInt_FromLong((long) AL_SAMPLE_24); |
|
3050 if (x == NULL || PyDict_SetItemString(d, "SAMPLE_24", x) < 0) |
|
3051 goto error; |
|
3052 Py_DECREF(x); |
|
3053 #endif |
|
3054 #ifdef AL_SAMPLE_8 |
|
3055 x = PyInt_FromLong((long) AL_SAMPLE_8); |
|
3056 if (x == NULL || PyDict_SetItemString(d, "SAMPLE_8", x) < 0) |
|
3057 goto error; |
|
3058 Py_DECREF(x); |
|
3059 #endif |
|
3060 #ifdef AL_SCALAR_VAL |
|
3061 x = PyInt_FromLong((long) AL_SCALAR_VAL); |
|
3062 if (x == NULL || PyDict_SetItemString(d, "SCALAR_VAL", x) < 0) |
|
3063 goto error; |
|
3064 Py_DECREF(x); |
|
3065 #endif |
|
3066 #ifdef AL_SET_VAL |
|
3067 x = PyInt_FromLong((long) AL_SET_VAL); |
|
3068 if (x == NULL || PyDict_SetItemString(d, "SET_VAL", x) < 0) |
|
3069 goto error; |
|
3070 Py_DECREF(x); |
|
3071 #endif |
|
3072 #ifdef AL_SHORT_NAME |
|
3073 x = PyInt_FromLong((long) AL_SHORT_NAME); |
|
3074 if (x == NULL || PyDict_SetItemString(d, "SHORT_NAME", x) < 0) |
|
3075 goto error; |
|
3076 Py_DECREF(x); |
|
3077 #endif |
|
3078 #ifdef AL_SMPTE272M_IF_TYPE |
|
3079 x = PyInt_FromLong((long) AL_SMPTE272M_IF_TYPE); |
|
3080 if (x == NULL || PyDict_SetItemString(d, "SMPTE272M_IF_TYPE", x) < 0) |
|
3081 goto error; |
|
3082 Py_DECREF(x); |
|
3083 #endif |
|
3084 #ifdef AL_SOURCE |
|
3085 x = PyInt_FromLong((long) AL_SOURCE); |
|
3086 if (x == NULL || PyDict_SetItemString(d, "SOURCE", x) < 0) |
|
3087 goto error; |
|
3088 Py_DECREF(x); |
|
3089 #endif |
|
3090 #ifdef AL_SPEAKER_IF_TYPE |
|
3091 x = PyInt_FromLong((long) AL_SPEAKER_IF_TYPE); |
|
3092 if (x == NULL || PyDict_SetItemString(d, "SPEAKER_IF_TYPE", x) < 0) |
|
3093 goto error; |
|
3094 Py_DECREF(x); |
|
3095 #endif |
|
3096 #ifdef AL_SPEAKER_MUTE_CTL |
|
3097 x = PyInt_FromLong((long) AL_SPEAKER_MUTE_CTL); |
|
3098 if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_CTL", x) < 0) |
|
3099 goto error; |
|
3100 Py_DECREF(x); |
|
3101 #endif |
|
3102 #ifdef AL_SPEAKER_MUTE_OFF |
|
3103 x = PyInt_FromLong((long) AL_SPEAKER_MUTE_OFF); |
|
3104 if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_OFF", x) < 0) |
|
3105 goto error; |
|
3106 Py_DECREF(x); |
|
3107 #endif |
|
3108 #ifdef AL_SPEAKER_MUTE_ON |
|
3109 x = PyInt_FromLong((long) AL_SPEAKER_MUTE_ON); |
|
3110 if (x == NULL || PyDict_SetItemString(d, "SPEAKER_MUTE_ON", x) < 0) |
|
3111 goto error; |
|
3112 Py_DECREF(x); |
|
3113 #endif |
|
3114 #ifdef AL_SPEAKER_PLUS_LINE_IF_TYPE |
|
3115 x = PyInt_FromLong((long) AL_SPEAKER_PLUS_LINE_IF_TYPE); |
|
3116 if (x == NULL || PyDict_SetItemString(d, "SPEAKER_PLUS_LINE_IF_TYPE", x) < 0) |
|
3117 goto error; |
|
3118 Py_DECREF(x); |
|
3119 #endif |
|
3120 #ifdef AL_STEREO |
|
3121 x = PyInt_FromLong((long) AL_STEREO); |
|
3122 if (x == NULL || PyDict_SetItemString(d, "STEREO", x) < 0) |
|
3123 goto error; |
|
3124 Py_DECREF(x); |
|
3125 #endif |
|
3126 #ifdef AL_STRING_VAL |
|
3127 x = PyInt_FromLong((long) AL_STRING_VAL); |
|
3128 if (x == NULL || PyDict_SetItemString(d, "STRING_VAL", x) < 0) |
|
3129 goto error; |
|
3130 Py_DECREF(x); |
|
3131 #endif |
|
3132 #ifdef AL_SUBSYSTEM |
|
3133 x = PyInt_FromLong((long) AL_SUBSYSTEM); |
|
3134 if (x == NULL || PyDict_SetItemString(d, "SUBSYSTEM", x) < 0) |
|
3135 goto error; |
|
3136 Py_DECREF(x); |
|
3137 #endif |
|
3138 #ifdef AL_SUBSYSTEM_TYPE |
|
3139 x = PyInt_FromLong((long) AL_SUBSYSTEM_TYPE); |
|
3140 if (x == NULL || PyDict_SetItemString(d, "SUBSYSTEM_TYPE", x) < 0) |
|
3141 goto error; |
|
3142 Py_DECREF(x); |
|
3143 #endif |
|
3144 #ifdef AL_SYNC_INPUT_TO_AES |
|
3145 x = PyInt_FromLong((long) AL_SYNC_INPUT_TO_AES); |
|
3146 if (x == NULL || PyDict_SetItemString(d, "SYNC_INPUT_TO_AES", x) < 0) |
|
3147 goto error; |
|
3148 Py_DECREF(x); |
|
3149 #endif |
|
3150 #ifdef AL_SYNC_OUTPUT_TO_AES |
|
3151 x = PyInt_FromLong((long) AL_SYNC_OUTPUT_TO_AES); |
|
3152 if (x == NULL || PyDict_SetItemString(d, "SYNC_OUTPUT_TO_AES", x) < 0) |
|
3153 goto error; |
|
3154 Py_DECREF(x); |
|
3155 #endif |
|
3156 #ifdef AL_SYSTEM |
|
3157 x = PyInt_FromLong((long) AL_SYSTEM); |
|
3158 if (x == NULL || PyDict_SetItemString(d, "SYSTEM", x) < 0) |
|
3159 goto error; |
|
3160 Py_DECREF(x); |
|
3161 #endif |
|
3162 #ifdef AL_SYSTEM_TYPE |
|
3163 x = PyInt_FromLong((long) AL_SYSTEM_TYPE); |
|
3164 if (x == NULL || PyDict_SetItemString(d, "SYSTEM_TYPE", x) < 0) |
|
3165 goto error; |
|
3166 Py_DECREF(x); |
|
3167 #endif |
|
3168 #ifdef AL_TEST_IF_TYPE |
|
3169 x = PyInt_FromLong((long) AL_TEST_IF_TYPE); |
|
3170 if (x == NULL || PyDict_SetItemString(d, "TEST_IF_TYPE", x) < 0) |
|
3171 goto error; |
|
3172 Py_DECREF(x); |
|
3173 #endif |
|
3174 #ifdef AL_TYPE |
|
3175 x = PyInt_FromLong((long) AL_TYPE); |
|
3176 if (x == NULL || PyDict_SetItemString(d, "TYPE", x) < 0) |
|
3177 goto error; |
|
3178 Py_DECREF(x); |
|
3179 #endif |
|
3180 #ifdef AL_TYPE_BIT |
|
3181 x = PyInt_FromLong((long) AL_TYPE_BIT); |
|
3182 if (x == NULL || PyDict_SetItemString(d, "TYPE_BIT", x) < 0) |
|
3183 goto error; |
|
3184 Py_DECREF(x); |
|
3185 #endif |
|
3186 #ifdef AL_UNUSED_COUNT |
|
3187 x = PyInt_FromLong((long) AL_UNUSED_COUNT); |
|
3188 if (x == NULL || PyDict_SetItemString(d, "UNUSED_COUNT", x) < 0) |
|
3189 goto error; |
|
3190 Py_DECREF(x); |
|
3191 #endif |
|
3192 #ifdef AL_UNUSED_PORTS |
|
3193 x = PyInt_FromLong((long) AL_UNUSED_PORTS); |
|
3194 if (x == NULL || PyDict_SetItemString(d, "UNUSED_PORTS", x) < 0) |
|
3195 goto error; |
|
3196 Py_DECREF(x); |
|
3197 #endif |
|
3198 #ifdef AL_VARIABLE_MCLK_TYPE |
|
3199 x = PyInt_FromLong((long) AL_VARIABLE_MCLK_TYPE); |
|
3200 if (x == NULL || PyDict_SetItemString(d, "VARIABLE_MCLK_TYPE", x) < 0) |
|
3201 goto error; |
|
3202 Py_DECREF(x); |
|
3203 #endif |
|
3204 #ifdef AL_VECTOR_VAL |
|
3205 x = PyInt_FromLong((long) AL_VECTOR_VAL); |
|
3206 if (x == NULL || PyDict_SetItemString(d, "VECTOR_VAL", x) < 0) |
|
3207 goto error; |
|
3208 Py_DECREF(x); |
|
3209 #endif |
|
3210 #ifdef AL_VIDEO_MCLK_TYPE |
|
3211 x = PyInt_FromLong((long) AL_VIDEO_MCLK_TYPE); |
|
3212 if (x == NULL || PyDict_SetItemString(d, "VIDEO_MCLK_TYPE", x) < 0) |
|
3213 goto error; |
|
3214 Py_DECREF(x); |
|
3215 #endif |
|
3216 #ifdef AL_WORDSIZE |
|
3217 x = PyInt_FromLong((long) AL_WORDSIZE); |
|
3218 if (x == NULL || PyDict_SetItemString(d, "WORDSIZE", x) < 0) |
|
3219 goto error; |
|
3220 Py_DECREF(x); |
|
3221 #endif |
|
3222 |
|
3223 #ifdef AL_NO_ELEM /* IRIX 6 */ |
|
3224 (void) alSetErrorHandler(ErrorHandler); |
|
3225 #endif /* AL_NO_ELEM */ |
|
3226 #ifdef OLD_INTERFACE |
|
3227 (void) ALseterrorhandler(ErrorHandler); |
|
3228 #endif /* OLD_INTERFACE */ |
|
3229 |
|
3230 error: |
|
3231 return; |
|
3232 } |