[PD-cvs] pd/src d_soundfile.c,1.1.1.2.2.2,1.1.1.2.2.3 g_array.c,1.1.1.3.2.2,1.1.1.3.2.3 notes.txt,1.1.1.4.2.5,1.1.1.4.2.6 s_audio_jack.c,1.1.2.7,1.1.2.8 s_audio_mmio.c,1.1.1.1.2.3,1.1.1.1.2.4 s_inter.c,1.1.1.3.2.11,1.1.1.3.2.12
Guenter Geiger
ggeiger at users.sourceforge.net
Thu May 6 10:28:15 CEST 2004
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1693
Modified Files:
Tag: devel_0_37
d_soundfile.c g_array.c notes.txt s_audio_jack.c
s_audio_mmio.c s_inter.c
Log Message:
merged in version 0.37.1
Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.1.1.4.2.5
retrieving revision 1.1.1.4.2.6
diff -C2 -d -r1.1.1.4.2.5 -r1.1.1.4.2.6
*** notes.txt 14 Jan 2004 15:45:39 -0000 1.1.1.4.2.5
--- notes.txt 6 May 2004 08:28:12 -0000 1.1.1.4.2.6
***************
*** 1,15 ****
---------------- dolist --------------------
! fix for 0.37:
! pd exit, bad filedesc
! Make install makes an externs, and anyway, doesn't put help files in extra
read xx.txt in "bad" gives warnings
! mess with RME ALSA some more; ALSA readn doesn't work yet.
test MIDI I/O on all platforms, inc. sysex...
! windows quit doesn't confirm on Windows?
! check Pd in OSX 10.3
! OSS seems not to detect FIFO out of kilter
!
! 0.38:
%x to %lx in all "tags" to make 64-bit safe
plug-in support
--- 1,10 ----
---------------- dolist --------------------
! 0.38:
read xx.txt in "bad" gives warnings
! mess with RME ALSA some more; ALSA readn doesn't work yet; use mmap?
test MIDI I/O on all platforms, inc. sysex...
! document env~ second argument (and why is it no less than 1/10 of first???)
! make watchdog work for MACOSX
%x to %lx in all "tags" to make 64-bit safe
plug-in support
***************
*** 20,23 ****
--- 15,19 ----
signal inlets to sense signals; fix +~ etc, vcf~, biquad~, and make a vcfb~
+
makefile to set SETUID bit on install?
loading e-mailed patches without removing headers crashes pd
***************
*** 48,51 ****
--- 44,49 ----
problems:
+ writesf -- "open" without "0" misses closing the previous file.
+ Also writesf~ acts differently if DSP is off when "open" is sent?
qlist - 'next 1' seems not to work
arrays of non-existent templates crash
Index: g_array.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_array.c,v
retrieving revision 1.1.1.3.2.2
retrieving revision 1.1.1.3.2.3
diff -C2 -d -r1.1.1.3.2.2 -r1.1.1.3.2.3
*** g_array.c 12 Sep 2003 20:55:31 -0000 1.1.1.3.2.2
--- g_array.c 6 May 2004 08:28:12 -0000 1.1.1.3.2.3
***************
*** 971,975 ****
maxv = -v;
}
! if (maxv >= 0)
{
renormer = f / maxv;
--- 971,975 ----
maxv = -v;
}
! if (maxv > 0)
{
renormer = f / maxv;
Index: d_soundfile.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/d_soundfile.c,v
retrieving revision 1.1.1.2.2.2
retrieving revision 1.1.1.2.2.3
diff -C2 -d -r1.1.1.2.2.2 -r1.1.1.2.2.3
*** d_soundfile.c 22 Feb 2004 17:36:50 -0000 1.1.1.2.2.2
--- d_soundfile.c 6 May 2004 08:28:12 -0000 1.1.1.2.2.3
***************
*** 186,191 ****
/******************** soundfile access routines **********************/
- void readsf_banana( void); /* debugging */
-
/* This routine opens a file, looks for either a nextstep or "wave" header,
* seeks to end of it, and fills in bytes per sample and number of channels.
--- 186,189 ----
***************
*** 373,376 ****
--- 371,377 ----
if (sysrtn != nchannels * bytespersamp * skipframes + headersize)
return (-1);
+ bytelimit -= nchannels * bytespersamp * skipframes;
+ if (bytelimit < 0)
+ bytelimit = 0;
/* copy sample format back to caller */
*p_bigendian = bigendian;
***************
*** 579,582 ****
--- 580,584 ----
bigendian = garray_ambigendian();
}
+ else bigendian = endianness;
swap = (bigendian != garray_ambigendian());
if (!argc || argv->a_type != A_SYMBOL)
***************
*** 1018,1023 ****
framesinfile = maxsize;
}
! if (framesinfile > bytelimit / bytespersamp)
! framesinfile = bytelimit / bytespersamp;
finalsize = framesinfile;
for (i = 0; i < argc; i++)
--- 1020,1025 ----
framesinfile = maxsize;
}
! if (framesinfile > bytelimit / (channels * bytespersamp))
! framesinfile = bytelimit / (channels * bytespersamp);
finalsize = framesinfile;
for (i = 0; i < argc; i++)
***************
*** 1038,1043 ****
}
if (!finalsize) finalsize = 0x7fffffff;
! if (finalsize > bytelimit / bytespersamp)
! finalsize = bytelimit / bytespersamp;
fp = fdopen(fd, "rb");
bufframes = SAMPBUFSIZE / (channels * bytespersamp);
--- 1040,1045 ----
}
if (!finalsize) finalsize = 0x7fffffff;
! if (finalsize > bytelimit / (channels * bytespersamp))
! finalsize = bytelimit / (channels * bytespersamp);
fp = fdopen(fd, "rb");
bufframes = SAMPBUFSIZE / (channels * bytespersamp);
***************
*** 1306,1311 ****
write(2, s, strlen(s));
}
! #else
! #define pute(x)
#endif
--- 1308,1312 ----
write(2, s, strlen(s));
}
! #define DEBUG_SOUNDFILE
#endif
***************
*** 1326,1340 ****
}
- void readsf_banana( void)
- {
- struct timeval timout;
- timout.tv_sec = 0;
- timout.tv_usec = 200000;
- pute("banana1\n");
- select(0, 0, 0, 0, &timout);
- pute("banana2\n");
- }
-
-
#define sfread_cond_wait(a,b) readsf_fakewait(b)
#define sfread_cond_signal(a)
--- 1327,1330 ----
***************
*** 1344,1348 ****
--- 1334,1340 ----
{
t_readsf *x = zz;
+ #ifdef DEBUG_SOUNDFILE
pute("1\n");
+ #endif
pthread_mutex_lock(&x->x_mutex);
while (1)
***************
*** 1350,1360 ****
--- 1342,1358 ----
int fd, fifohead;
char *buf;
+ #ifdef DEBUG_SOUNDFILE
pute("0\n");
+ #endif
if (x->x_requestcode == REQUEST_NOTHING)
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait 2\n");
+ #endif
sfread_cond_signal(&x->x_answercondition);
sfread_cond_wait(&x->x_requestcondition, &x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("3\n");
+ #endif
}
else if (x->x_requestcode == REQUEST_OPEN)
***************
*** 1375,1379 ****
--- 1373,1379 ----
/* alter the request code so that an ensuing "open" will get
noticed. */
+ #ifdef DEBUG_SOUNDFILE
pute("4\n");
+ #endif
x->x_requestcode = REQUEST_BUSY;
x->x_fileerror = 0;
***************
*** 1397,1401 ****
--- 1397,1403 ----
pthread_mutex_lock(&x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("5\n");
+ #endif
/* copy back into the instance structure. */
x->x_bytespersample = bytespersample;
***************
*** 1408,1414 ****
--- 1410,1418 ----
x->x_fileerror = errno;
x->x_eof = 1;
+ #ifdef DEBUG_SOUNDFILE
pute("open failed\n");
pute(filename);
pute(dirname);
+ #endif
goto lost;
}
***************
*** 1416,1420 ****
--- 1420,1426 ----
if (x->x_requestcode != REQUEST_BUSY)
goto lost;
+ #ifdef DEBUG_SOUNDFILE
pute("6\n");
+ #endif
x->x_fifohead = 0;
/* set fifosize from bufsize. fifosize must be a
***************
*** 1430,1434 ****
--- 1436,1442 ----
sprintf(boo, "fifosize %d\n",
x->x_fifosize);
+ #ifdef DEBUG_SOUNDFILE
pute(boo);
+ #endif
x->x_sigcountdown = x->x_sigperiod =
(x->x_fifosize /
***************
*** 1440,1444 ****
--- 1448,1454 ----
{
int fifosize = x->x_fifosize;
+ #ifdef DEBUG_SOUNDFILE
pute("77\n");
+ #endif
if (x->x_eof)
break;
***************
*** 1460,1473 ****
--- 1470,1491 ----
sprintf(boo, "head %d, tail %d, size %d\n",
x->x_fifohead, x->x_fifotail, wantbytes);
+ #ifdef DEBUG_SOUNDFILE
pute(boo);
+ #endif
}
else
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait 7a ...\n");
+ #endif
sfread_cond_signal(&x->x_answercondition);
+ #ifdef DEBUG_SOUNDFILE
pute("signalled\n");
+ #endif
sfread_cond_wait(&x->x_requestcondition,
&x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("7a done\n");
+ #endif
continue;
}
***************
*** 1480,1493 ****
--- 1498,1519 ----
if (wantbytes < READSIZE)
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait 7...\n");
+ #endif
sfread_cond_signal(&x->x_answercondition);
sfread_cond_wait(&x->x_requestcondition,
&x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("7 done\n");
+ #endif
continue;
}
else wantbytes = READSIZE;
+ if (wantbytes > x->x_bytelimit)
+ wantbytes = x->x_bytelimit;
}
+ #ifdef DEBUG_SOUNDFILE
pute("8\n");
+ #endif
fd = x->x_fd;
buf = x->x_buf;
***************
*** 1500,1504 ****
--- 1526,1532 ----
if (sysrtn < 0)
{
+ #ifdef DEBUG_SOUNDFILE
pute("fileerror\n");
+ #endif
x->x_fileerror = errno;
break;
***************
*** 1521,1527 ****
--- 1549,1557 ----
x->x_fifohead = 0;
}
+ #ifdef DEBUG_SOUNDFILE
sprintf(boo, "after: head %d, tail %d\n",
x->x_fifohead, x->x_fifotail);
pute(boo);
+ #endif
/* signal parent in case it's waiting for data */
sfread_cond_signal(&x->x_answercondition);
***************
*** 1574,1581 ****
--- 1604,1615 ----
else
{
+ #ifdef DEBUG_SOUNDFILE
pute("13\n");
+ #endif
}
}
+ #ifdef DEBUG_SOUNDFILE
pute("thread exit\n");
+ #endif
pthread_mutex_unlock(&x->x_mutex);
return (0);
***************
*** 1648,1659 ****
--- 1682,1698 ----
x->x_fifohead < x->x_fifotail + wantbytes-1)
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait...\n");
+ #endif
sfread_cond_signal(&x->x_requestcondition);
sfread_cond_wait(&x->x_answercondition, &x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("done\n");
+ #endif
}
if (x->x_eof && x->x_fifohead >= x->x_fifotail &&
x->x_fifohead < x->x_fifotail + wantbytes-1)
{
+ int xfersize;
if (x->x_fileerror)
{
***************
*** 1665,1671 ****
clock_delay(x->x_clock, 0);
x->x_state = STATE_IDLE;
sfread_cond_signal(&x->x_requestcondition);
pthread_mutex_unlock(&x->x_mutex);
! goto idle;
}
--- 1704,1726 ----
clock_delay(x->x_clock, 0);
x->x_state = STATE_IDLE;
+
+ /* if there's a partial buffer left, copy it out. */
+ xfersize = (x->x_fifohead - x->x_fifotail + 1) /
+ (sfchannels * bytespersample);
+ if (xfersize)
+ {
+ soundfile_xferin(sfchannels, noutlets, x->x_outvec, 0,
+ (unsigned char *)(x->x_buf + x->x_fifotail), xfersize,
+ bytespersample, bigendian);
+ vecsize -= xfersize;
+ }
+ /* then zero out the (rest of the) output */
+ for (i = 0; i < noutlets; i++)
+ for (j = vecsize, fp = x->x_outvec[i] + xfersize; j--; )
+ *fp++ = 0;
+
sfread_cond_signal(&x->x_requestcondition);
pthread_mutex_unlock(&x->x_mutex);
! return (w+2);
}
***************
*** 1831,1845 ****
--- 1886,1908 ----
{
t_writesf *x = zz;
+ #ifdef DEBUG_SOUNDFILE
pute("1\n");
+ #endif
pthread_mutex_lock(&x->x_mutex);
while (1)
{
+ #ifdef DEBUG_SOUNDFILE
pute("0\n");
+ #endif
if (x->x_requestcode == REQUEST_NOTHING)
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait 2\n");
+ #endif
sfread_cond_signal(&x->x_answercondition);
sfread_cond_wait(&x->x_requestcondition, &x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("3\n");
+ #endif
}
else if (x->x_requestcode == REQUEST_OPEN)
***************
*** 1863,1867 ****
--- 1926,1932 ----
/* alter the request code so that an ensuing "open" will get
noticed. */
+ #ifdef DEBUG_SOUNDFILE
pute("4\n");
+ #endif
x->x_requestcode = REQUEST_BUSY;
x->x_fileerror = 0;
***************
*** 1883,1888 ****
garray_ambigendian() != bigendian, samplerate);
pthread_mutex_lock(&x->x_mutex);
!
pute("5\n");
if (fd < 0)
--- 1948,1954 ----
garray_ambigendian() != bigendian, samplerate);
pthread_mutex_lock(&x->x_mutex);
! #ifdef DEBUG_SOUNDFILE
pute("5\n");
+ #endif
if (fd < 0)
***************
*** 1891,1896 ****
--- 1957,1964 ----
x->x_eof = 1;
x->x_fileerror = errno;
+ #ifdef DEBUG_SOUNDFILE
pute("open failed\n");
pute(filename);
+ #endif
x->x_requestcode = REQUEST_NOTHING;
continue;
***************
*** 1899,1903 ****
--- 1967,1973 ----
if (x->x_requestcode != REQUEST_BUSY)
continue;
+ #ifdef DEBUG_SOUNDFILE
pute("6\n");
+ #endif
x->x_fd = fd;
x->x_fifotail = 0;
***************
*** 1912,1916 ****
--- 1982,1988 ----
int fifosize = x->x_fifosize, fifotail;
char *buf = x->x_buf;
+ #ifdef DEBUG_SOUNDFILE
pute("77\n");
+ #endif
/* if the head is < the tail, we can immediately write
***************
*** 1930,1942 ****
--- 2002,2022 ----
else
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait 7a ...\n");
+ #endif
sfread_cond_signal(&x->x_answercondition);
+ #ifdef DEBUG_SOUNDFILE
pute("signalled\n");
+ #endif
sfread_cond_wait(&x->x_requestcondition,
&x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("7a done\n");
+ #endif
continue;
}
+ #ifdef DEBUG_SOUNDFILE
pute("8\n");
+ #endif
fifotail = x->x_fifotail;
fd = x->x_fd;
***************
*** 1949,1953 ****
--- 2029,2035 ----
if (sysrtn < writebytes)
{
+ #ifdef DEBUG_SOUNDFILE
pute("fileerror\n");
+ #endif
x->x_fileerror = errno;
break;
***************
*** 1963,1967 ****
--- 2045,2051 ----
sprintf(boo, "after: head %d, tail %d\n",
x->x_fifohead, x->x_fifotail);
+ #ifdef DEBUG_SOUNDFILE
pute(boo);
+ #endif
/* signal parent in case it's waiting for data */
sfread_cond_signal(&x->x_answercondition);
***************
*** 1998,2005 ****
--- 2082,2093 ----
else
{
+ #ifdef DEBUG_SOUNDFILE
pute("13\n");
+ #endif
}
}
+ #ifdef DEBUG_SOUNDFILE
pute("thread exit\n");
+ #endif
pthread_mutex_unlock(&x->x_mutex);
return (0);
***************
*** 2067,2074 ****
--- 2155,2166 ----
x->x_fifotail < x->x_fifohead + wantbytes + 1)
{
+ #ifdef DEBUG_SOUNDFILE
pute("wait...\n");
+ #endif
sfread_cond_signal(&x->x_requestcondition);
sfread_cond_wait(&x->x_answercondition, &x->x_mutex);
+ #ifdef DEBUG_SOUNDFILE
pute("done\n");
+ #endif
}
***************
*** 2082,2086 ****
--- 2174,2180 ----
if ((--x->x_sigcountdown) <= 0)
{
+ #ifdef DEBUG_SOUNDFILE
pute("signal 1\n");
+ #endif
sfread_cond_signal(&x->x_requestcondition);
x->x_sigcountdown = x->x_sigperiod;
***************
*** 2107,2111 ****
--- 2201,2207 ----
x->x_state = STATE_IDLE;
x->x_requestcode = REQUEST_CLOSE;
+ #ifdef DEBUG_SOUNDFILE
pute("signal 2\n");
+ #endif
sfread_cond_signal(&x->x_requestcondition);
pthread_mutex_unlock(&x->x_mutex);
Index: s_inter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v
retrieving revision 1.1.1.3.2.11
retrieving revision 1.1.1.3.2.12
diff -C2 -d -r1.1.1.3.2.11 -r1.1.1.3.2.12
*** s_inter.c 31 Mar 2004 13:19:10 -0000 1.1.1.3.2.11
--- s_inter.c 6 May 2004 08:28:12 -0000 1.1.1.3.2.12
***************
*** 682,686 ****
--- 682,690 ----
p1 = sched_get_priority_min(SCHED_FIFO);
p2 = sched_get_priority_max(SCHED_FIFO);
+ #ifdef USEAPI_JACK
+ p3 = (higher ? p1 + 7 : p1 + 5);
+ #else
p3 = (higher ? p2 - 1 : p2 - 3);
+ #endif
par.sched_priority = p3;
if (sched_setscheduler(0,SCHED_FIFO,&par) != -1)
***************
*** 746,750 ****
signal(SIGBUS, sys_exithandler);
signal(SIGSEGV, sys_exithandler); */
! signal(SIGPIPE, sys_exithandler);
signal(SIGALRM, SIG_IGN);
signal(SIGTERM, SIG_IGN);
--- 750,754 ----
signal(SIGBUS, sys_exithandler);
signal(SIGSEGV, sys_exithandler); */
! signal(SIGPIPE, SIG_IGN);
signal(SIGALRM, SIG_IGN);
signal(SIGTERM, SIG_IGN);
Index: s_audio_mmio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_mmio.c,v
retrieving revision 1.1.1.1.2.3
retrieving revision 1.1.1.1.2.4
diff -C2 -d -r1.1.1.1.2.3 -r1.1.1.1.2.4
*** s_audio_mmio.c 22 Feb 2004 17:36:51 -0000 1.1.1.1.2.3
--- s_audio_mmio.c 6 May 2004 08:28:12 -0000 1.1.1.1.2.4
***************
*** 71,75 ****
}
! static void wave_prep(t_sbuf *bp)
{
WAVEHDR *wh;
--- 71,75 ----
}
! static void wave_prep(t_sbuf *bp, int setdone)
{
WAVEHDR *wh;
***************
*** 111,114 ****
--- 111,117 ----
wh->lpNext = 0;
wh->reserved = 0;
+ /* optionally (for writing) set DONE flag as if we had queued them */
+ if (setdone)
+ wh->dwFlags = WHDR_DONE;
}
***************
*** 139,144 ****
{
for (i = nindevsprepped; i < nt_nwavein; i++)
! for (j = 0; j < nt_naudiobuffer; j++)
! wave_prep(&ntsnd_invec[i][j]);
nindevsprepped = nt_nwavein;
}
--- 142,147 ----
{
for (i = nindevsprepped; i < nt_nwavein; i++)
! for (j = 0; j < naudioprepped; j++)
! wave_prep(&ntsnd_invec[i][j], 0);
nindevsprepped = nt_nwavein;
}
***************
*** 146,151 ****
{
for (i = noutdevsprepped; i < nt_nwaveout; i++)
! for (j = 0; j < nt_naudiobuffer; j++)
! wave_prep(&ntsnd_outvec[i][j]);
noutdevsprepped = nt_nwaveout;
}
--- 149,154 ----
{
for (i = noutdevsprepped; i < nt_nwaveout; i++)
! for (j = 0; j < naudioprepped; j++)
! wave_prep(&ntsnd_outvec[i][j], 1);
noutdevsprepped = nt_nwaveout;
}
***************
*** 155,161 ****
{
for (i = 0; i < nt_nwavein; i++)
! wave_prep(&ntsnd_invec[i][j]);
for (i = 0; i < nt_nwaveout; i++)
! wave_prep(&ntsnd_outvec[i][j]);
}
naudioprepped = nt_naudiobuffer;
--- 158,164 ----
{
for (i = 0; i < nt_nwavein; i++)
! wave_prep(&ntsnd_invec[i][j], 0);
for (i = 0; i < nt_nwaveout; i++)
! wave_prep(&ntsnd_outvec[i][j], 1);
}
naudioprepped = nt_naudiobuffer;
Index: s_audio_jack.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_jack.c,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -C2 -d -r1.1.2.7 -r1.1.2.8
*** s_audio_jack.c 24 Feb 2004 10:00:56 -0000 1.1.2.7
--- s_audio_jack.c 6 May 2004 08:28:12 -0000 1.1.2.8
***************
*** 233,236 ****
--- 233,237 ----
if (!jack_client) { // jack spits out enough messages already, do not warn
+ sys_inchannels = sys_outchannels = 0;
return 1;
}
***************
*** 297,301 ****
if (new_jack) {
if (jack_activate (jack_client)) {
! fprintf (stderr, "cannot activate client");
return 1;
}
--- 298,303 ----
if (new_jack) {
if (jack_activate (jack_client)) {
! fprintf (stderr, "cannot activate client\n");
! sys_inchannels = sys_outchannels = 0;
return 1;
}
More information about the Pd-cvs
mailing list