[PD-cvs] pd/src s_audio_portaudio.c,1.1.2.17,1.1.2.18
Thomas Grill
xovo at users.sourceforge.net
Mon Aug 7 19:18:09 CEST 2006
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12281/src
Modified Files:
Tag: devel_0_39
s_audio_portaudio.c
Log Message:
fixes for portaudio device indices
Index: s_audio_portaudio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/s_audio_portaudio.c,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -C2 -d -r1.1.2.17 -r1.1.2.18
*** s_audio_portaudio.c 5 Aug 2006 19:03:59 -0000 1.1.2.17
--- s_audio_portaudio.c 7 Aug 2006 17:18:07 -0000 1.1.2.18
***************
*** 68,73 ****
static int pa_bufferpos;
! static int pdindev2paindev(int pdindev);
! static int pdoutdev2paoutdev(int pdoutdev);
int process (const void *input, void *output, unsigned long frameCount,
--- 68,73 ----
static int pa_bufferpos;
! static int pddev2padev(int pdindev,int isinput);
! static int padev2pddev(int padev,int isinput);
int process (const void *input, void *output, unsigned long frameCount,
***************
*** 89,92 ****
--- 89,93 ----
PaError err;
int j, devno;
+ const PaDeviceInfo *pdi,*pdo;
schedmode = 1; /* we don't support blocking io */
***************
*** 108,148 ****
}
if (inchans > 0)
{
! for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++)
! {
! const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int maxchans = info->maxInputChannels;
! if (maxchans > 0)
! {
! if (devno == indeviceno)
! {
! if (maxchans < inchans)
! inchans = maxchans;
! pa_indev = j;
! break;
! }
! devno++;
! }
}
}
if (outchans > 0)
{
! for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++)
! {
! const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int maxchans = info->maxOutputChannels;
! if (maxchans > 0)
! {
! if (devno == outdeviceno)
! {
! if (maxchans < outchans)
! outchans = maxchans;
! pa_outdev = j;
! break;
! }
! devno++;
! }
}
}
--- 109,131 ----
}
+ pdi = NULL;
if (inchans > 0)
{
! pa_indev = pddev2padev(indeviceno,1);
! if(pa_indev >= 0) {
! pdi = Pa_GetDeviceInfo(pa_indev);
! if(pdi->maxInputChannels < inchans)
! inchans = pdi->maxInputChannels;
}
}
+ pdo = NULL;
if (outchans > 0)
{
! pa_outdev = pddev2padev(outdeviceno,0);
! if(pa_outdev >= 0) {
! pdo = Pa_GetDeviceInfo(pa_outdev);
! if(pdo->maxOutputChannels < outchans)
! outchans = pdo->maxOutputChannels;
}
}
***************
*** 160,166 ****
PaStreamParameters inputParameters, outputParameters;
- const PaDeviceInfo* pdi = Pa_GetDeviceInfo(pa_indev);
- const PaDeviceInfo* pdo = Pa_GetDeviceInfo(pa_outdev);
-
/* initialize input */
inputParameters.device = pa_indev;
--- 143,146 ----
***************
*** 218,222 ****
sys_schedadvance = 1e-6 * streaminfo->outputLatency;
! SETFLOAT(atoms, (float)pa_indev);
SETFLOAT(atoms+1, (float)inchans);
SETFLOAT(atoms+2, (float)rate);
--- 198,202 ----
sys_schedadvance = 1e-6 * streaminfo->outputLatency;
! SETFLOAT(atoms, (float)indeviceno);
SETFLOAT(atoms+1, (float)inchans);
SETFLOAT(atoms+2, (float)rate);
***************
*** 224,228 ****
typedmess(pd->s_thing, selector1, 4, atoms);
! SETFLOAT(atoms, (float)pa_outdev);
SETFLOAT(atoms+1, (float)outchans);
SETFLOAT(atoms+2, (float)rate);
--- 204,208 ----
typedmess(pd->s_thing, selector1, 4, atoms);
! SETFLOAT(atoms, (float)outdeviceno);
SETFLOAT(atoms+1, (float)outchans);
SETFLOAT(atoms+2, (float)rate);
***************
*** 479,483 ****
void pa_getaudioininfo(t_float f)
{
! int i = pdindev2paindev((int)f);
const PaDeviceInfo * pdi;
--- 459,463 ----
void pa_getaudioininfo(t_float f)
{
! int i = pddev2padev((int)f,1);
const PaDeviceInfo * pdi;
***************
*** 500,504 ****
void pa_getaudiooutinfo(t_float f)
{
! int i = pdoutdev2paoutdev((int)f);
const PaDeviceInfo * pdi;
--- 480,484 ----
void pa_getaudiooutinfo(t_float f)
{
! int i = pddev2padev((int)f,0);
const PaDeviceInfo * pdi;
***************
*** 524,529 ****
t_symbol * selector = gensym("audiodevice");
t_atom argv[2];
! SETFLOAT(argv, pa_indev);
! SETFLOAT(argv+1, pa_outdev);
typedmess(pd->s_thing, selector, 2, argv);
}
--- 504,509 ----
t_symbol * selector = gensym("audiodevice");
t_atom argv[2];
! SETFLOAT(argv, padev2pddev(pa_indev,1));
! SETFLOAT(argv+1, padev2pddev(pa_outdev,0));
typedmess(pd->s_thing, selector, 2, argv);
}
***************
*** 543,548 ****
pa_initialize();
! indev = pdindev2paindev(indev);
! outdev = pdoutdev2paoutdev(outdev);
if ((pa_indev == -1) && (pa_outdev == -1))
--- 523,528 ----
pa_initialize();
! indev = pddev2padev(indev,1);
! outdev = pddev2padev(outdev,0);
if ((pa_indev == -1) && (pa_outdev == -1))
***************
*** 570,574 ****
}
! static int pdindev2paindev(int pdindev)
{
int j;
--- 550,554 ----
}
! static int pddev2padev(int pddev,int input)
{
int j;
***************
*** 579,586 ****
{
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int maxchans = info->maxInputChannels;
if (maxchans > 0)
{
! if (devno == pdindev)
{
return j;
--- 559,566 ----
{
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int maxchans = input?info->maxInputChannels:info->maxOutputChannels;
if (maxchans > 0)
{
! if (devno == pddev)
{
return j;
***************
*** 593,617 ****
}
! static int pdoutdev2paoutdev(int pdoutdev)
{
! int j;
! int devno;
! pa_initialize();
!
! for (j = 0, devno = 0; j < Pa_GetDeviceCount(); j++)
{
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int maxchans = info->maxOutputChannels;
! if (maxchans > 0)
{
! if (devno == pdoutdev)
! {
! return j;
! }
devno++;
}
}
!
! return -1;
}
--- 573,591 ----
}
! static int padev2pddev(int padev,int input)
{
! int j,devno;
! int count = Pa_GetDeviceCount();
! for (j = 0, devno = 0; j < count; j++)
{
const PaDeviceInfo *info = Pa_GetDeviceInfo(j);
! int chans = input?info->maxInputChannels:info->maxOutputChannels;
! if (chans > 0)
{
! if(j == padev) return devno;
devno++;
}
}
! return -1; // no found
}
More information about the Pd-cvs
mailing list