From 64c61824dc8bc2a83c03cd609bea77f374b6cfe5 Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Mon, 2 Feb 2004 14:31:34 +0000 Subject: merged with version_0_37_1test6 svn path=/trunk/; revision=1310 --- pd/src/d_soundfile.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'pd/src/d_soundfile.c') diff --git a/pd/src/d_soundfile.c b/pd/src/d_soundfile.c index 5752fade..f9b9d802 100644 --- a/pd/src/d_soundfile.c +++ b/pd/src/d_soundfile.c @@ -540,7 +540,7 @@ static int soundfiler_writeargparse(void *obj, int *p_argc, t_atom **p_argv, } else if (!strcmp(flag, "little")) { - endianness = 1; + endianness = 0; argc -= 1; argv += 1; } else if (!strcmp(flag, "r") || !strcmp(flag, "rate")) @@ -670,7 +670,7 @@ static int create_soundfile(t_canvas *canvas, const char *filename, wavehdr->w_samplespersec = swap4(samplerate, swap); wavehdr->w_navgbytespersec = swap4((int)(samplerate * nchannels * bytespersamp), swap); - wavehdr->w_nblockalign = swap2(bytespersamp, swap); + wavehdr->w_nblockalign = swap2(nchannels * bytespersamp, swap); wavehdr->w_nbitspersample = swap2(8 * bytespersamp, swap); strncpy(wavehdr->w_datachunkid, "data", 4); wavehdr->w_datachunksize = swap4(datasize, swap); @@ -729,6 +729,19 @@ static void soundfile_finishwrite(void *obj, char *filename, int fd, if (write(fd, (char *)(&mofo), 4) < 4) goto baddonewrite; } + if (filetype == FORMAT_NEXT) + { + /* do it the lazy way: just set the size field to 'unknown size'*/ + uint32 nextsize = 0xffffffff; + if (lseek(fd, 8, SEEK_SET) == 0) + { + goto baddonewrite; + } + if (write(fd, &nextsize, 4) < 4) + { + goto baddonewrite; + } + } } return; baddonewrite: -- cgit v1.2.1