version 1.10, 2010/01/10 21:47:41 |
version 1.11, 2010/04/03 17:40:33 |
|
|
} |
} |
|
|
int |
int |
wav_readhdr(int fd, struct aparams *par, off_t *datasz, short **map) |
wav_readhdr(int fd, struct aparams *par, off_t *startpos, off_t *datasz, short **map) |
{ |
{ |
struct wavriff riff; |
struct wavriff riff; |
struct wavchunk chunk; |
struct wavchunk chunk; |
|
|
return 0; |
return 0; |
fmt_done = 1; |
fmt_done = 1; |
} else if (memcmp(chunk.id, wav_id_data, 4) == 0) { |
} else if (memcmp(chunk.id, wav_id_data, 4) == 0) { |
|
*startpos = pos; |
*datasz = csize; |
*datasz = csize; |
break; |
break; |
} else { |
} else { |
|
|
return 1; |
return 1; |
} |
} |
|
|
|
/* |
|
* Write header and seek to start position |
|
*/ |
int |
int |
wav_writehdr(int fd, struct aparams *par) |
wav_writehdr(int fd, struct aparams *par, off_t *startpos, off_t datasz) |
{ |
{ |
off_t datasz; |
|
unsigned nch = par->cmax - par->cmin + 1; |
unsigned nch = par->cmax - par->cmin + 1; |
struct { |
struct { |
struct wavriff riff; |
struct wavriff riff; |
|
|
struct wavchunk data_hdr; |
struct wavchunk data_hdr; |
} hdr; |
} hdr; |
|
|
datasz = lseek(fd, 0, SEEK_CUR); |
|
if (datasz < 0) { |
|
warn("wav_writehdr: lseek(end)"); |
|
return 0; |
|
} |
|
if (datasz >= sizeof(hdr)) |
|
datasz -= sizeof(hdr); |
|
else |
|
datasz = 0; |
|
|
|
/* |
/* |
* Check that encoding is supported by .wav file format. |
* Check that encoding is supported by .wav file format. |
*/ |
*/ |
|
|
warn("wav_writehdr: write"); |
warn("wav_writehdr: write"); |
return 0; |
return 0; |
} |
} |
|
*startpos = sizeof(hdr); |
return 1; |
return 1; |
} |
} |