Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13330
Modified Files: Tag: desiredata s_audio_sgi.c Log Message: cleanup
Index: s_audio_sgi.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/s_audio_sgi.c,v retrieving revision 1.1.4.1.4.2 retrieving revision 1.1.4.1.4.3 diff -C2 -d -r1.1.4.1.4.2 -r1.1.4.1.4.3 *** s_audio_sgi.c 30 Jul 2007 22:32:02 -0000 1.1.4.1.4.2 --- s_audio_sgi.c 30 Jul 2007 22:48:21 -0000 1.1.4.1.4.3 *************** *** 188,353 **** unsigned int outtransfersize = sys_dacblocksize; unsigned int intransfersize = sys_dacblocksize; ! ! /* no audio channels open, return */ ! if (!inchannels && !outchannels) ! return (SENDDACS_NO); ! timelast = timenow; timenow = sys_getrealtime(); - #ifdef DEBUG_SGI_XFER if (timenow - timelast > 0.050) ! fprintf(stderr, "(%d)", ! (int)(1000 * (timenow - timelast))), fflush(stderr); #endif - callno++; ! ! sgi_checkiosync(); /* check I/O are in sync and data not late */ ! ! /* check whether there is enough space in buffers */ ! if (sgi_nindevs) ! { ! for (n = 0; n < sgi_nindevs; n++) ! { ! if (alGetFilled(sgi_iport[n]) < intransfersize) ! return SENDDACS_NO; ! } } ! if (sgi_noutdevs) ! { ! for(n = 0; n < sgi_noutdevs; n++) ! { ! if (alGetFillable(sgi_oport[n]) < outtransfersize) ! return SENDDACS_NO; ! } } ! ! /* output audio data, if we use audio out */ ! if (sgi_noutdevs) ! { ! fp2 = sys_soundout; /* point to current output position in buffer */ ! for(n = 0; n < sgi_noutdevs; n++) ! { ! outdevchannels = sgi_noutchans[n]; /* channels supported by this device */ ! ! for (channel = 0, fp1 = buf; ! channel < outdevchannels; channel++, fp1++, fp2 += sys_dacblocksize) ! { ! for (i = 0, fp3 = fp1, fp4 = fp2; i < sys_dacblocksize; ! i++, fp3 += outdevchannels, fp4++) ! *fp3 = *fp4, *fp4 = 0; ! } ! alWriteFrames(sgi_oport[n], buf, sys_dacblocksize); ! } } ! ! /* zero out the output buffer */ ! memset(sys_soundout, 0, sys_dacblocksize * sizeof(*sys_soundout) * sys_outchannels); ! if (sys_getrealtime() - timenow > 0.002) ! { #ifdef DEBUG_SGI_XFER ! fprintf(stderr, "output %d took %d msec\n", ! callno, (int)(1000 * (timenow - timelast))), fflush(stderr); #endif ! timenow = sys_getrealtime(); ! sys_log_error(ERR_DACSLEPT); } - - /* get audio data from input, if we use audio in */ - if (sgi_nindevs) - { - fp2 = sys_soundin; /* point to current input position in buffer */ - for (n = 0; n < sgi_nindevs; n++) - { - indevchannels = sgi_ninchans[n]; /* channels supported by this device */ - - if (alGetFilled(sgi_iport[n]) > sys_dacblocksize) - { - alReadFrames(sgi_iport[n], buf, sys_dacblocksize); - } - else /* have to read but nothing's there... */ - { - // if (sys_verbose) post("extra ADC buf"); - /* set buffer to silence */ - memset(buf, 0, intransfersize * sizeof(*sys_soundout) * sgi_ninchans[n]); - } - for (channel = 0, fp1 = buf; - channel < indevchannels; channel++, fp1++, fp2 += sys_dacblocksize) - { - for (i = 0, fp3 = fp1, fp4 = fp2; i < sys_dacblocksize; - i++, fp3 += indevchannels, fp4++) - *fp4 = *fp3; - } - } } - xferno++; ! ! if (sys_getrealtime() - timenow > 0.002) ! { #ifdef DEBUG_SGI_XFER ! fprintf(stderr, "routine took %d msec\n", ! (int)(1000 * (sys_getrealtime() - timenow))); #endif sys_log_error(ERR_ADCSLEPT); } ! return (SENDDACS_YES); }
! void sgi_getdevs(char *indevlist, int *nindevs, ! char *outdevlist, int *noutdevs, int *canmulti, ! int maxndev, int devdescsize) ! { #if 0 ! ALpv pvs[1]; ! char name[32]; int i, ndev, err; *canmulti = 3; /* supports multiple devices */ ! ! /* get max. number of audio ports from system */ ! pvs[0].param = AL_DEVICES; ! err = alGetParams(AL_SYSTEM, pvs, 1); ! if (err < 0) ! { ! sprintf("alGetParams failed: %s\n", alGetErrorString(oserror())); ! } ndev = pvs[0].value.i; ! ! for (i = 0; i < ndev; i++) ! { ! pvs[0].param = AL_NAME; /* a string parameter */ ! pvs[0].value.ptr = name; /* the string we've allocated */ ! pvs[0].sizeIn = 32; /* the array size, in characters, ! including space for NULL */ ! if (alGetParams(i, pvs, 1) < 0) ! { ! sprintf("alGetParams failed: %s\n", alGetErrorString(oserror())); ! } sprintf(indevlist + i * devdescsize, "%d: %s", i + 1, name); sprintf(outdevlist + i * devdescsize, "%d: %s", i + 1, name); } *nindevs = ndev; ! *noutdevs = ndev; #else ! sprintf(indevlist + 0 * devdescsize, "Default In"); sprintf(outdevlist + 0 * devdescsize, "Default Out"); ! sprintf(indevlist + 1 * devdescsize, "Analog In"); sprintf(outdevlist + 1 * devdescsize, "Analog Out"); ! sprintf(indevlist + 2 * devdescsize, "AES In"); sprintf(outdevlist + 2 * devdescsize, "AES Out"); ! sprintf(indevlist + 3 * devdescsize, "ADAT In"); sprintf(outdevlist + 3 * devdescsize, "ADAT Out"); - *nindevs = 4; ! *noutdevs = 4; *canmulti = 3; /* supports multiple devices */ #endif }
- /* list devices: only reflect the most common setup (Octane) */ ! void sgi_listaudiodevs(void) ! { post("common devices on SGI machines:"); post("#-1 - Default In/Out selected in Audio Panel"); --- 188,303 ---- unsigned int outtransfersize = sys_dacblocksize; unsigned int intransfersize = sys_dacblocksize; ! /* no audio channels open, return */ ! if (!inchannels && !outchannels) return SENDDACS_NO; timelast = timenow; timenow = sys_getrealtime(); #ifdef DEBUG_SGI_XFER if (timenow - timelast > 0.050) ! fprintf(stderr, "(%d)", (int)(1000 * (timenow - timelast))), fflush(stderr); #endif callno++; ! sgi_checkiosync(); /* check I/O are in sync and data not late */ ! /* check whether there is enough space in buffers */ ! if (sgi_nindevs) { ! for (n = 0; n < sgi_nindevs; n++) { ! if (alGetFilled(sgi_iport[n]) < intransfersize) ! return SENDDACS_NO; ! } } ! if (sgi_noutdevs) { ! for(n = 0; n < sgi_noutdevs; n++) { ! if (alGetFillable(sgi_oport[n]) < outtransfersize) ! return SENDDACS_NO; ! } } ! /* output audio data, if we use audio out */ ! if (sgi_noutdevs) { ! fp2 = sys_soundout; /* point to current output position in buffer */ ! for(n = 0; n < sgi_noutdevs; n++) { ! outdevchannels = sgi_noutchans[n]; /* channels supported by this device */ ! for (channel = 0, fp1 = buf; channel < outdevchannels; channel++, fp1++, fp2 += sys_dacblocksize) { ! for (i = 0, fp3 = fp1, fp4 = fp2; i < sys_dacblocksize; i++, fp3 += outdevchannels, fp4++) *fp3 = *fp4, *fp4 = 0; ! } ! alWriteFrames(sgi_oport[n], buf, sys_dacblocksize); ! } } ! /* zero out the output buffer */ ! memset(sys_soundout, 0, sys_dacblocksize * sizeof(*sys_soundout) * sys_outchannels); ! if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_SGI_XFER ! fprintf(stderr, "output %d took %d msec\n", callno, (int)(1000 * (timenow - timelast))), fflush(stderr); #endif ! timenow = sys_getrealtime(); ! sys_log_error(ERR_DACSLEPT); ! } ! /* get audio data from input, if we use audio in */ ! if (sgi_nindevs) { ! fp2 = sys_soundin; /* point to current input position in buffer */ ! for (n = 0; n < sgi_nindevs; n++) { ! indevchannels = sgi_ninchans[n]; /* channels supported by this device */ ! if (alGetFilled(sgi_iport[n]) > sys_dacblocksize) { ! alReadFrames(sgi_iport[n], buf, sys_dacblocksize); ! } else /* have to read but nothing's there... */ { ! // if (sys_verbose) post("extra ADC buf"); ! /* set buffer to silence */ ! memset(buf, 0, intransfersize * sizeof(*sys_soundout) * sgi_ninchans[n]); ! } ! for (channel = 0, fp1 = buf; channel < indevchannels; channel++, fp1++, fp2 += sys_dacblocksize) { ! for (i = 0, fp3 = fp1, fp4 = fp2; i < sys_dacblocksize; i++, fp3 += indevchannels, fp4++) *fp4 = *fp3; ! } } } xferno++; ! if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_SGI_XFER ! fprintf(stderr, "routine took %d msec\n", (int)(1000 * (sys_getrealtime() - timenow))); #endif sys_log_error(ERR_ADCSLEPT); } ! return SENDDACS_YES; }
! void sgi_getdevs(char *indevlist, int *nindevs, char *outdevlist, int *noutdevs, int *canmulti, int maxndev, int devdescsize) { #if 0 ! ALpv pvs[1]; ! char name[32]; int i, ndev, err; *canmulti = 3; /* supports multiple devices */ ! /* get max. number of audio ports from system */ ! pvs[0].param = AL_DEVICES; ! err = alGetParams(AL_SYSTEM, pvs, 1); ! if (err < 0) { ! sprintf("alGetParams failed: %s\n", alGetErrorString(oserror())); ! } ndev = pvs[0].value.i; ! for (i = 0; i < ndev; i++) { ! pvs[0].param = AL_NAME; /* a string parameter */ ! pvs[0].value.ptr = name; /* the string we've allocated */ ! pvs[0].sizeIn = 32; /* the array size, in characters, including space for NULL */ ! if (alGetParams(i, pvs, 1) < 0) { ! sprintf("alGetParams failed: %s\n", alGetErrorString(oserror())); ! } sprintf(indevlist + i * devdescsize, "%d: %s", i + 1, name); sprintf(outdevlist + i * devdescsize, "%d: %s", i + 1, name); } *nindevs = ndev; ! *noutdevs = ndev; #else ! sprintf( indevlist + 0 * devdescsize, "Default In"); sprintf(outdevlist + 0 * devdescsize, "Default Out"); ! sprintf( indevlist + 1 * devdescsize, "Analog In"); sprintf(outdevlist + 1 * devdescsize, "Analog Out"); ! sprintf( indevlist + 2 * devdescsize, "AES In"); sprintf(outdevlist + 2 * devdescsize, "AES Out"); ! sprintf( indevlist + 3 * devdescsize, "ADAT In"); sprintf(outdevlist + 3 * devdescsize, "ADAT Out"); *nindevs = 4; ! *noutdevs = 4; *canmulti = 3; /* supports multiple devices */ #endif }
/* list devices: only reflect the most common setup (Octane) */ ! void sgi_listaudiodevs() { post("common devices on SGI machines:"); post("#-1 - Default In/Out selected in Audio Panel");