Lines Matching refs:ft

37 static int32_t ft_read_b_buf(void * ft, void * buf, int32_t len) {  in ft_read_b_buf()  argument
38 return (int32_t)lsx_read_b_buf((sox_format_t *)ft, buf, (size_t)len);} in ft_read_b_buf()
39 static uint32_t ft_tell(void * ft) { in ft_tell() argument
40 return lsx_tell((sox_format_t *)ft);} in ft_tell()
41 static int ft_seek_abs(void * ft, uint32_t offset) { in ft_seek_abs() argument
42 return lsx_seeki((sox_format_t *)ft, (off_t)offset, SEEK_SET);} in ft_seek_abs()
43 static int ft_seek_rel(void * ft, int32_t offset, int mode) { in ft_seek_rel() argument
44 return lsx_seeki((sox_format_t *)ft, (off_t)offset, mode);} in ft_seek_rel()
45 static int ft_unreadb(void * ft, int b) { in ft_unreadb() argument
46 return lsx_unreadb((sox_format_t *)ft, (unsigned)b);} in ft_unreadb()
47 static uint32_t ft_filelength(void * ft) { in ft_filelength() argument
48 return (uint32_t)lsx_filelength((sox_format_t *)ft);} in ft_filelength()
49 static int ft_is_seekable(void *ft) { in ft_is_seekable() argument
50 return ((sox_format_t *)ft)->seekable;} in ft_is_seekable()
51 static int32_t ft_write_b_buf(void * ft, void * buf, int32_t len) { in ft_write_b_buf() argument
52 priv_t * p = (priv_t *)((sox_format_t *)ft)->priv; in ft_write_b_buf()
55 return (int32_t)lsx_write_b_buf((sox_format_t *)ft, buf, (size_t)len);} in ft_write_b_buf()
62 static int start_read(sox_format_t * ft) in start_read() argument
64 priv_t * p = (priv_t *)ft->priv; in start_read()
67 p->codec = WavpackOpenFileInputEx(&io_fns, ft, NULL, msg, OPEN_NORMALIZE, 0); in start_read()
69 lsx_fail_errno(ft, SOX_EHDR, "%s", msg); in start_read()
72 ft->encoding.bits_per_sample = WavpackGetBytesPerSample(p->codec) << 3; in start_read()
73 ft->signal.channels = WavpackGetNumChannels(p->codec); in start_read()
74 …if (WavpackGetSampleRate(p->codec) && ft->signal.rate && ft->signal.rate != WavpackGetSampleRate(p… in start_read()
75 lsx_warn("`%s': overriding sample rate", ft->filename); in start_read()
76 else ft->signal.rate = WavpackGetSampleRate(p->codec); in start_read()
78 ft->signal.length = (uint64_t)WavpackGetNumSamples(p->codec) * ft->signal.channels; in start_read()
79 ft->encoding.encoding = (WavpackGetMode(p->codec) & MODE_FLOAT)? in start_read()
84 static size_t read_samples(sox_format_t * ft, sox_sample_t * buf, size_t len) in read_samples() argument
86 priv_t * p = (priv_t *)ft->priv; in read_samples()
87 …size_t i, actual = WavpackUnpackSamples(p->codec, buf, (uint32_t) len / ft->signal.channels) * ft-… in read_samples()
88 for (i = 0; i < actual; ++i) switch (ft->encoding.bits_per_sample) { in read_samples()
93 case 32: buf[i] = ft->encoding.encoding == SOX_ENCODING_WAVPACKF? in read_samples()
94 SOX_FLOAT_32BIT_TO_SAMPLE(*(float *)&buf[i], ft->clips) : in read_samples()
101 static int stop_read(sox_format_t * ft) in stop_read() argument
103 priv_t * p = (priv_t *)ft->priv; in stop_read()
108 static int start_write(sox_format_t * ft) in start_write() argument
110 priv_t * p = (priv_t *)ft->priv; in start_write()
114 p->codec = WavpackOpenFileOutput(ft_write_b_buf, ft, NULL); in start_write()
116 lsx_fail_errno(ft, SOX_ENOMEM, "WavPack error creating output instance"); in start_write()
120 config.bytes_per_sample = ft->encoding.bits_per_sample >> 3; in start_write()
121 config.bits_per_sample = ft->encoding.bits_per_sample; in start_write()
122 config.channel_mask = ft->signal.channels == 1? 4 : in start_write()
123 ft->signal.channels == 2? 3 : (1 << ft->signal.channels) - 1; in start_write()
124 config.num_channels = ft->signal.channels; in start_write()
125 config.sample_rate = (int32_t)(ft->signal.rate + .5); in start_write()
127 size64 = ft->signal.length / ft->signal.channels; in start_write()
129 lsx_fail_errno(ft, SOX_EHDR, "%s", WavpackGetErrorMessage(p->codec)); in start_write()
136 static size_t write_samples(sox_format_t * ft, const sox_sample_t * buf, size_t len) in write_samples() argument
138 priv_t * p = (priv_t *)ft->priv; in write_samples()
143 for (i = 0; i < len; ++i) switch (ft->encoding.bits_per_sample) { in write_samples()
145 case 8: obuf[i] = SOX_SAMPLE_TO_SIGNED_8BIT(buf[i], ft->clips); break; in write_samples()
146 case 16: obuf[i] = SOX_SAMPLE_TO_SIGNED_16BIT(buf[i], ft->clips); break; in write_samples()
147 case 24: obuf[i] = SOX_SAMPLE_TO_SIGNED_24BIT(buf[i], ft->clips) << 8; in write_samples()
149 case 32: obuf[i] = ft->encoding.encoding == SOX_ENCODING_WAVPACKF? in write_samples()
150 SOX_SAMPLE_TO_SIGNED_24BIT(*(float *)&buf[i], ft->clips) : in write_samples()
151 SOX_SAMPLE_TO_SIGNED_32BIT(buf[i], ft->clips); in write_samples()
154 result = WavpackPackSamples(p->codec, obuf, (uint32_t) len / ft->signal.channels); in write_samples()
159 static int stop_write(sox_format_t * ft) in stop_write() argument
161 priv_t * p = (priv_t *)ft->priv; in stop_write()
164 lsx_fail_errno(ft, SOX_EINVAL, "%s", WavpackGetErrorMessage(p->codec)); in stop_write()
167 …if (ft->seekable && WavpackGetNumSamples(p->codec) != WavpackGetSampleIndex(p->codec) && p->first_… in stop_write()
169 lsx_rewind(ft); in stop_write()
170 lsx_readchars(ft, buf, p->first_block_size); in stop_write()
173 lsx_rewind(ft); in stop_write()
174 lsx_writebuf(ft, buf, p->first_block_size); in stop_write()
182 static int seek(sox_format_t * ft, uint64_t offset) in seek() argument
184 priv_t * p = (priv_t *)ft->priv; in seek()
186 …return WavpackSeekSample(p->codec, (uint32_t) (offset / ft->signal.channels))? SOX_SUCCESS : SOX_E… in seek()