Lines Matching refs:ft

34 static int startread(sox_format_t * ft)  in startread()  argument
36 priv_t * p = (priv_t *) ft->priv; in startread()
52 rc = lsx_rawstartread(ft); in startread()
57 if (lsx_reads(ft, buf, (size_t)4) == SOX_EOF || strncmp(buf, "FORM", (size_t)4) != 0) in startread()
59 lsx_fail_errno(ft,SOX_EHDR,"MAUD: header does not begin with magic word `FORM'"); in startread()
63 lsx_readdw(ft, &trash32); /* totalsize */ in startread()
65 if (lsx_reads(ft, buf, (size_t)4) == SOX_EOF || strncmp(buf, "MAUD", (size_t)4) != 0) in startread()
67 lsx_fail_errno(ft,SOX_EHDR,"MAUD: `FORM' chunk does not specify `MAUD' as type"); in startread()
73 while (lsx_reads(ft, buf, (size_t)4) == SOX_SUCCESS && strncmp(buf,"MDAT",(size_t)4) != 0) { in startread()
82 lsx_readdw(ft, &chunksize); in startread()
85 lsx_fail_errno(ft,SOX_EHDR,"MAUD: MHDR chunk has bad size"); in startread()
90 lsx_readdw(ft, &(p->nsamples)); in startread()
93 lsx_readw(ft, &bitpersam); in startread()
96 lsx_readw(ft, &trash16); in startread()
98 lsx_readdw(ft, &nom); /* clock source frequency */ in startread()
99 lsx_readw(ft, &denom); /* clock devide */ in startread()
102 lsx_fail_errno(ft,SOX_EHDR,"MAUD: frequency denominator == 0, failed"); in startread()
106 ft->signal.rate = nom / denom; in startread()
108 lsx_readw(ft, &chaninf); /* channel information */ in startread()
111 ft->signal.channels = 1; in startread()
114 ft->signal.channels = 2; in startread()
117 … lsx_fail_errno(ft,SOX_EFMT,"MAUD: unsupported number of channels in file"); in startread()
121 lsx_readw(ft, &chaninf); /* number of channels (mono: 1, stereo: 2, ...) */ in startread()
122 if (chaninf != ft->signal.channels) in startread()
124 … lsx_fail_errno(ft,SOX_EFMT,"MAUD: unsupported number of channels in file"); in startread()
128 lsx_readw(ft, &chaninf); /* compression type */ in startread()
130 lsx_readdw(ft, &trash32); /* rest of chunk, unused yet */ in startread()
131 lsx_readdw(ft, &trash32); in startread()
132 lsx_readdw(ft, &trash32); in startread()
135 ft->encoding.bits_per_sample = 8; in startread()
136 ft->encoding.encoding = SOX_ENCODING_UNSIGNED; in startread()
139 ft->encoding.bits_per_sample = 8; in startread()
140 ft->encoding.encoding = SOX_ENCODING_ALAW; in startread()
143 ft->encoding.bits_per_sample = 8; in startread()
144 ft->encoding.encoding = SOX_ENCODING_ULAW; in startread()
147 ft->encoding.bits_per_sample = 16; in startread()
148 ft->encoding.encoding = SOX_ENCODING_SIGN2; in startread()
152 … lsx_fail_errno(ft,SOX_EFMT,"MAUD: unsupported compression type detected"); in startread()
160 lsx_readdw(ft, &chunksize); in startread()
164 if (lsx_readbuf(ft, chunk_buf, (size_t)chunksize) in startread()
167 lsx_fail_errno(ft,SOX_EOF,"MAUD: Unexpected EOF in ANNO header"); in startread()
178 lsx_readdw(ft, &chunksize); in startread()
181 lsx_seeki(ft, (off_t)chunksize, SEEK_CUR); in startread()
188 lsx_fail_errno(ft,SOX_EFMT,"MAUD: MDAT chunk not found"); in startread()
191 lsx_readdw(ft, &(p->nsamples)); in startread()
195 static int startwrite(sox_format_t * ft) in startwrite() argument
197 priv_t * p = (priv_t *) ft->priv; in startwrite()
201 rc = lsx_rawstartwrite(ft); in startwrite()
206 if (! ft->seekable) in startwrite()
208 lsx_fail_errno(ft,SOX_EOF,"Output .maud file must be a file, not a pipe"); in startwrite()
212 maudwriteheader(ft); in startwrite()
217 static size_t write_samples(sox_format_t * ft, const sox_sample_t *buf, size_t len) in write_samples() argument
219 priv_t * p = (priv_t *) ft->priv; in write_samples()
223 return lsx_rawwrite(ft, buf, len); in write_samples()
226 static int stopwrite(sox_format_t * ft) in stopwrite() argument
230 priv_t *p = (priv_t*)ft->priv; in stopwrite()
232 mdat_size = p->nsamples * (ft->encoding.bits_per_sample >> 3); in stopwrite()
233 lsx_padbytes(ft, (size_t) (mdat_size%2)); in stopwrite()
235 if (lsx_seeki(ft, (off_t)0, 0) != 0) in stopwrite()
237 lsx_fail_errno(ft,errno,"can't rewind output file to rewrite MAUD header"); in stopwrite()
241 maudwriteheader(ft); in stopwrite()
246 static void maudwriteheader(sox_format_t * ft) in maudwriteheader() argument
248 priv_t * p = (priv_t *) ft->priv; in maudwriteheader()
251 mdat_size = p->nsamples * (ft->encoding.bits_per_sample >> 3); in maudwriteheader()
253 lsx_writes(ft, "FORM"); in maudwriteheader()
254 lsx_writedw(ft, MAUDHEADERSIZE + mdat_size + mdat_size%2); /* size of file */ in maudwriteheader()
255 lsx_writes(ft, "MAUD"); /* File type */ in maudwriteheader()
257 lsx_writes(ft, "MHDR"); in maudwriteheader()
258 lsx_writedw(ft, 8*4); /* number of bytes to follow */ in maudwriteheader()
259 lsx_writedw(ft, p->nsamples); /* number of samples stored in MDAT */ in maudwriteheader()
261 switch (ft->encoding.encoding) { in maudwriteheader()
264 lsx_writew(ft, 8); /* number of bits per sample as stored in MDAT */ in maudwriteheader()
265 lsx_writew(ft, 8); /* number of bits per sample after decompression */ in maudwriteheader()
269 lsx_writew(ft, 16); /* number of bits per sample as stored in MDAT */ in maudwriteheader()
270 lsx_writew(ft, 16); /* number of bits per sample after decompression */ in maudwriteheader()
275 lsx_writew(ft, 8); /* number of bits per sample as stored in MDAT */ in maudwriteheader()
276 lsx_writew(ft, 16); /* number of bits per sample after decompression */ in maudwriteheader()
283 lsx_writedw(ft, (unsigned)(ft->signal.rate + .5)); /* sample rate, Hz */ in maudwriteheader()
284 lsx_writew(ft, (int) 1); /* clock devide */ in maudwriteheader()
286 if (ft->signal.channels == 1) { in maudwriteheader()
287 lsx_writew(ft, 0); /* channel information */ in maudwriteheader()
288 lsx_writew(ft, 1); /* number of channels (mono: 1, stereo: 2, ...) */ in maudwriteheader()
291 lsx_writew(ft, 1); in maudwriteheader()
292 lsx_writew(ft, 2); in maudwriteheader()
295 switch (ft->encoding.encoding) { in maudwriteheader()
299 lsx_writew(ft, 0); /* no compression */ in maudwriteheader()
303 lsx_writew(ft, 3); in maudwriteheader()
307 lsx_writew(ft, 2); in maudwriteheader()
314 lsx_writedw(ft, 0); /* reserved */ in maudwriteheader()
315 lsx_writedw(ft, 0); /* reserved */ in maudwriteheader()
316 lsx_writedw(ft, 0); /* reserved */ in maudwriteheader()
318 lsx_writes(ft, "ANNO"); in maudwriteheader()
319 lsx_writedw(ft, 19); /* length of block */ in maudwriteheader()
320 lsx_writes(ft, "file created by SoX"); in maudwriteheader()
321 lsx_padbytes(ft, (size_t)1); in maudwriteheader()
323 lsx_writes(ft, "MDAT"); in maudwriteheader()
324 lsx_writedw(ft, p->nsamples * (ft->encoding.bits_per_sample >> 3)); /* samples in file */ in maudwriteheader()