Lines Matching refs:ft
27 static int startread(sox_format_t * ft) in startread() argument
29 priv_t * p = (priv_t * ) ft->priv; in startread()
40 if (! ft->seekable) in startread()
42 lsx_fail_errno(ft,SOX_EINVAL,"8svx input file must be a file, not a pipe"); in startread()
49 if (lsx_reads(ft, buf, (size_t)4) == SOX_EOF || strncmp(buf, "FORM", (size_t)4) != 0) in startread()
51 lsx_fail_errno(ft, SOX_EHDR, "Header did not begin with magic word `FORM'"); in startread()
54 lsx_readdw(ft, &totalsize); in startread()
55 if (lsx_reads(ft, buf, (size_t)4) == SOX_EOF || strncmp(buf, "8SVX", (size_t)4) != 0) in startread()
57 lsx_fail_errno(ft, SOX_EHDR, "'FORM' chunk does not specify `8SVX' as type"); in startread()
62 while (lsx_reads(ft, buf, (size_t)4) == SOX_SUCCESS && strncmp(buf,"BODY",(size_t)4) != 0) { in startread()
64 lsx_readdw(ft, &chunksize); in startread()
67 lsx_fail_errno(ft, SOX_EHDR, "VHDR chunk has bad size"); in startread()
70 lsx_seeki(ft,(off_t)12,SEEK_CUR); in startread()
71 lsx_readw(ft, &rate); in startread()
72 lsx_seeki(ft,(off_t)1,SEEK_CUR); in startread()
73 lsx_readbuf(ft, buf,(size_t)1); in startread()
76 lsx_fail_errno(ft, SOX_EFMT, "Unsupported data compression"); in startread()
79 lsx_seeki(ft,(off_t)4,SEEK_CUR); in startread()
84 lsx_readdw(ft, &chunksize); in startread()
88 if (lsx_readbuf(ft, chunk_buf,(size_t)chunksize) in startread()
91 lsx_fail_errno(ft, SOX_EHDR, "Couldn't read all of header"); in startread()
102 lsx_readdw(ft, &chunksize); in startread()
106 if (lsx_readbuf(ft, chunk_buf,(size_t)chunksize) in startread()
109 lsx_fail_errno(ft, SOX_EHDR, "Couldn't read all of header"); in startread()
120 lsx_readdw(ft, &chunksize); in startread()
123 lsx_fail_errno(ft, SOX_EHDR, "Couldn't read all of header"); in startread()
126 lsx_readdw(ft, &channels); in startread()
136 lsx_readdw(ft, &chunksize); in startread()
139 lsx_seeki(ft,(off_t)chunksize,SEEK_CUR); in startread()
146 lsx_fail_errno(ft, SOX_EHDR, "Invalid sample rate"); in startread()
151 lsx_fail_errno(ft, SOX_EHDR, "BODY chunk not found"); in startread()
154 lsx_readdw(ft, &(p->nsamples)); in startread()
156 p->ch0_pos = lsx_tell(ft); in startread()
158 ft->signal.length = p->nsamples; in startread()
159 ft->signal.channels = channels; in startread()
160 ft->signal.rate = rate; in startread()
161 ft->encoding.encoding = SOX_ENCODING_SIGN2; in startread()
162 ft->encoding.bits_per_sample = 8; in startread()
170 static size_t read_samples(sox_format_t * ft, sox_sample_t *buf, size_t nsamp) in read_samples() argument
174 priv_t * p = (priv_t * ) ft->priv; in read_samples()
175 size_t frames = nsamp / ft->signal.channels; in read_samples()
176 unsigned width = p->nsamples / ft->signal.channels; in read_samples()
189 for (ch = 0; ch != ft->signal.channels; ch++) { in read_samples()
190 if (lsx_seeki(ft, p->ch0_pos + ch * width, SEEK_SET) || in read_samples()
191 chunk != lsx_readbuf(ft, p->buf[ch], chunk)) in read_samples()
192 return done * ft->signal.channels; in read_samples()
196 for (ch = 0; ch != ft->signal.channels; ch++) { in read_samples()
203 p->left -= chunk * ft->signal.channels; in read_samples()
206 return done * ft->signal.channels; in read_samples()
212 static int startwrite(sox_format_t * ft) in startwrite() argument
214 priv_t * p = (priv_t * ) ft->priv; in startwrite()
218 for (i = 0; i < ft->signal.channels; i++) { in startwrite()
221 lsx_fail_errno(ft,errno,"Can't open channel output file"); in startwrite()
234 static size_t write_samples(sox_format_t * ft, const sox_sample_t *buf, size_t len) in write_samples() argument
236 priv_t * p = (priv_t * ) ft->priv; in write_samples()
245 for (i = 0; i < ft->signal.channels; i++) { in write_samples()
246 datum = SOX_SAMPLE_TO_SIGNED_8BIT(*buf++, ft->clips); in write_samples()
249 done += ft->signal.channels; in write_samples()
258 static int stopwrite(sox_format_t * ft) in stopwrite() argument
260 priv_t * p = (priv_t * ) ft->priv; in stopwrite()
265 svxwriteheader(ft, (size_t) p->nsamples); in stopwrite()
269 for (i = 0; i < ft->signal.channels; i++) { in stopwrite()
272 … lsx_fail_errno (ft,errno,"Can't rewind channel output file %lu",(unsigned long)i); in stopwrite()
277 if (lsx_writebuf(ft, svxbuf, len) != len) { in stopwrite()
278 … lsx_fail_errno (ft,errno,"Can't write channel output file %lu",(unsigned long)i); in stopwrite()
287 lsx_writeb(ft, '\0'); in stopwrite()
296 static void svxwriteheader(sox_format_t * ft, size_t nsamples) in svxwriteheader() argument
303 lsx_writes(ft, "FORM"); in svxwriteheader()
304 lsx_writedw(ft, (unsigned) formsize); /* size of file */ in svxwriteheader()
305 lsx_writes(ft, "8SVX"); /* File type */ in svxwriteheader()
307 lsx_writes(ft, "VHDR"); in svxwriteheader()
308 lsx_writedw(ft, 20); /* number of bytes to follow */ in svxwriteheader()
309 lsx_writedw(ft, (unsigned) nsamples/ft->signal.channels); /* samples, 1-shot */ in svxwriteheader()
310 lsx_writedw(ft, 0); /* samples, repeat */ in svxwriteheader()
311 lsx_writedw(ft, 0); /* samples per repeat cycle */ in svxwriteheader()
312 lsx_writew(ft, min(65535, (unsigned)(ft->signal.rate + .5))); in svxwriteheader()
313 lsx_writeb(ft,1); /* number of octabes */ in svxwriteheader()
314 lsx_writeb(ft,0); /* data compression (none) */ in svxwriteheader()
315 lsx_writew(ft,1); lsx_writew(ft,0); /* volume */ in svxwriteheader()
317 lsx_writes(ft, "ANNO"); in svxwriteheader()
318 lsx_writedw(ft, 32); /* length of block */ in svxwriteheader()
319 lsx_writes(ft, "File created by Sound Exchange "); in svxwriteheader()
321 lsx_writes(ft, "CHAN"); in svxwriteheader()
322 lsx_writedw(ft, 4); in svxwriteheader()
323 lsx_writedw(ft, (ft->signal.channels == 2) ? 6u : in svxwriteheader()
324 (ft->signal.channels == 4) ? 15u : 2u); in svxwriteheader()
326 lsx_writes(ft, "BODY"); in svxwriteheader()
327 lsx_writedw(ft, (unsigned) nsamples); /* samples in file */ in svxwriteheader()