Lines Matching refs:ft
94 static int unpack_input(sox_format_t * ft, unsigned char *code) in unpack_input() argument
96 priv_t * p = (priv_t *) ft->priv; in unpack_input()
99 if (p->in_bits < (int)ft->encoding.bits_per_sample) { in unpack_input()
100 if (lsx_read_b_buf(ft, &in_byte, (size_t) 1) != 1) { in unpack_input()
107 *code = p->in_buffer & ((1 << ft->encoding.bits_per_sample) - 1); in unpack_input()
108 p->in_buffer >>= ft->encoding.bits_per_sample; in unpack_input()
109 p->in_bits -= ft->encoding.bits_per_sample; in unpack_input()
113 static size_t dec_read(sox_format_t *ft, sox_sample_t *buf, size_t samp) in dec_read() argument
115 priv_t * p = (priv_t *)ft->priv; in dec_read()
119 for (done = 0; samp > 0 && unpack_input(ft, &code) >= 0; ++done, --samp) in dec_read()
125 static int startread(sox_format_t * ft) in startread() argument
127 priv_t * p = (priv_t *) ft->priv; in startread()
137 if (lsx_readchars(ft, magic, sizeof(magic))) in startread()
142 lsx_fail_errno(ft, SOX_EHDR, "au: can't find Sun/NeXT/DEC identifier"); in startread()
146 ft->encoding.reverse_bytes = id[i].reverse_bytes; in startread()
148 if (lsx_readdw(ft, &hdr_size) || in startread()
149 lsx_readdw(ft, &data_size) || /* Can be SUN_UNSPEC */ in startread()
150 lsx_readdw(ft, &ft_encoding) || in startread()
151 lsx_readdw(ft, &rate) || in startread()
152 lsx_readdw(ft, &channels)) in startread()
156 lsx_fail_errno(ft, SOX_EHDR, "header size %u is too small", hdr_size); in startread()
164 lsx_fail_errno(ft, SOX_EFMT, "unsupported encoding `%s' (%#x)", str[n], ft_encoding); in startread()
175 ft->handler.seek = NULL; in startread()
176 ft->handler.read = dec_read; in startread()
182 if (lsx_readchars(ft, buf, info_size) != SOX_SUCCESS) { in startread()
186 sox_append_comments(&ft->oob.comments, buf); in startread()
191 return lsx_check_read_params(ft, channels, (sox_rate_t)rate, encoding, in startread()
195 static int write_header(sox_format_t * ft) in write_header() argument
197 char * comment = lsx_cat_comments(ft->oob.comments); in write_header()
200 int i = ft->encoding.reverse_bytes == MACHINE_IS_BIGENDIAN? 2 : 0; in write_header()
201 uint64_t size64 = ft->olength ? ft->olength : ft->signal.length; in write_header()
204 : size64*(ft->encoding.bits_per_sample >> 3) > UINT_MAX in write_header()
206 : (unsigned)(size64*(ft->encoding.bits_per_sample >> 3)); in write_header()
208 ||lsx_writechars(ft, id[i].str, sizeof(id[i].str)) in write_header()
209 ||lsx_writedw(ft, FIXED_HDR + (unsigned)info_len) in write_header()
210 ||lsx_writedw(ft, size) in write_header()
211 ||lsx_writedw(ft, ft_enc(ft->encoding.bits_per_sample, ft->encoding.encoding)) in write_header()
212 ||lsx_writedw(ft, (unsigned)(ft->signal.rate + .5)) in write_header()
213 ||lsx_writedw(ft, ft->signal.channels) in write_header()
214 ||lsx_writechars(ft, comment, len) in write_header()
215 ||lsx_padbytes(ft, info_len - len); in write_header()