Wow I haven't updated this in a long time.
This commit is contained in:
parent
66d9eb0629
commit
55010c8b48
15 changed files with 3980 additions and 23 deletions
46
wavrip.c
Normal file
46
wavrip.c
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define min(a,b) (((a)<(b))?(a):(b))
|
||||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
if ( argc < 2 ) return 1;
|
||||
FILE *fin, *fout;
|
||||
if ( !(fin = fopen(argv[1],"rb")) )
|
||||
return 2;
|
||||
unsigned char buf[131072];
|
||||
size_t nread = 0, pread = 0;
|
||||
int i = 0;
|
||||
keepreading:
|
||||
nread = fread(buf,1,4,fin);
|
||||
if ( feof(fin) || (nread < 4) )
|
||||
{
|
||||
fclose(fin);
|
||||
return 0;
|
||||
}
|
||||
if ( strncmp(buf,"RIFF",4) )
|
||||
{
|
||||
fseek(fin,-3,SEEK_CUR);
|
||||
goto keepreading;
|
||||
}
|
||||
char fname[256];
|
||||
snprintf(fname,256,"SND%d.wav",i);
|
||||
fout = fopen(fname,"wb");
|
||||
fwrite(buf,1,4,fout);
|
||||
nread = fread(buf,4,1,fin);
|
||||
fwrite(buf,1,4,fout);
|
||||
pread = (*(uint32_t*)buf)-4;
|
||||
while ( pread > 0 )
|
||||
{
|
||||
nread = fread(buf,1,min(131072,pread),fin);
|
||||
fwrite(buf,1,nread,fout);
|
||||
pread -= nread;
|
||||
}
|
||||
fclose(fout);
|
||||
i++;
|
||||
if ( !feof(fin) ) goto keepreading;
|
||||
fclose(fin);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue