aboutsummaryrefslogtreecommitdiff
path: root/pd/src/d_soundfile.c
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2004-02-02 14:31:34 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2004-02-02 14:31:34 +0000
commit64c61824dc8bc2a83c03cd609bea77f374b6cfe5 (patch)
treeb4b1af154b0ab3eae382b2d9dd5b6304b0bb1030 /pd/src/d_soundfile.c
parente3f67bd77b72fbaeb643792a2d1f9decddbccbbe (diff)
merged with version_0_37_1test6
svn path=/trunk/; revision=1310
Diffstat (limited to 'pd/src/d_soundfile.c')
-rw-r--r--pd/src/d_soundfile.c17
1 files changed, 15 insertions, 2 deletions
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: