Lines Matching +full:avg +full:- +full:samples
48 * Do anything required before you start reading samples.
51 * size and encoding of samples,
57 priv_t* pPriv = (priv_t*)ft->priv; in sunstartread()
68 if (ft->filename == 0 || ft->filename[0] == 0 || !strcasecmp("default", ft->filename)) { in sunstartread()
71 szDevname = ft->filename; in sunstartread()
74 pPriv->device = open(szDevname, O_RDONLY); in sunstartread()
75 if (pPriv->device < 0) { in sunstartread()
80 if (ft->encoding.encoding == SOX_ENCODING_UNKNOWN) ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartread()
84 if (ioctl(pPriv->device, AUDIO_GETDEV, &audio_dev) < 0) { in sunstartread()
98 if (ft->encoding.bits_per_sample == 8) in sunstartread()
100 if (ft->encoding.encoding != SOX_ENCODING_ULAW && in sunstartread()
101 ft->encoding.encoding != SOX_ENCODING_ALAW) in sunstartread()
104 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartread()
107 else if (ft->encoding.bits_per_sample == 16) in sunstartread()
110 ft->encoding.bits_per_sample = 8; in sunstartread()
111 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartread()
115 if (ft->encoding.bits_per_sample == 8) { in sunstartread()
117 pPriv->sample_shift = 0; in sunstartread()
118 if (ft->encoding.encoding != SOX_ENCODING_ULAW && in sunstartread()
119 ft->encoding.encoding != SOX_ENCODING_ALAW && in sunstartread()
120 ft->encoding.encoding != SOX_ENCODING_SIGN2) { in sunstartread()
124 if ((ft->encoding.encoding == SOX_ENCODING_ULAW || in sunstartread()
125 ft->encoding.encoding == SOX_ENCODING_ALAW) && in sunstartread()
126 ft->signal.channels == 2) in sunstartread()
129 ft->signal.channels = 1; in sunstartread()
132 else if (ft->encoding.bits_per_sample == 16) { in sunstartread()
134 pPriv->sample_shift = 1; in sunstartread()
135 if (ft->encoding.encoding != SOX_ENCODING_SIGN2) { in sunstartread()
145 if (ft->signal.channels == 0) in sunstartread()
146 ft->signal.channels = 1; in sunstartread()
147 else if (ft->signal.channels > 1) { in sunstartread()
151 lsx_report("Try forcing output to signed words or use the avg"); in sunstartread()
153 ft->signal.channels = 2; in sunstartread()
157 if (ioctl(pPriv->device, AUDIO_GETINFO, &audio_if) < 0) { in sunstartread()
162 audio_if.record.channels = ft->signal.channels; in sunstartread()
163 audio_if.record.sample_rate = ft->signal.rate; in sunstartread()
164 if (ft->encoding.encoding == SOX_ENCODING_ULAW) in sunstartread()
166 else if (ft->encoding.encoding == SOX_ENCODING_ALAW) in sunstartread()
172 ioctl(pPriv->device, AUDIO_SETINFO, &audio_if); in sunstartread()
177 if (audio_if.record.channels != ft->signal.channels) { in sunstartread()
181 if (audio_if.record.sample_rate != ft->signal.rate) { in sunstartread()
189 /* Flush any data in the buffers - its probably in the wrong format */ in sunstartread()
191 ioctl(pPriv->device, AUDIO_FLUSH); in sunstartread()
193 ioctl(pPriv->device, (unsigned long int)I_FLUSH, FLUSHR); in sunstartread()
195 ioctl(pPriv->device, I_FLUSH, FLUSHR); in sunstartread()
198 pPriv->cOutput = 0; in sunstartread()
199 pPriv->pOutput = NULL; in sunstartread()
213 priv_t* pPriv = (priv_t*)ft->priv; in sunstartwrite()
215 if (ft->filename == 0 || ft->filename[0] == 0 || !strcasecmp("default", ft->filename)) { in sunstartwrite()
218 szDevname = ft->filename; in sunstartwrite()
221 pPriv->device = open(szDevname, O_WRONLY); in sunstartwrite()
222 if (pPriv->device < 0) { in sunstartwrite()
229 if (ioctl(pPriv->device, AUDIO_GETDEV, &audio_dev) < 0) { in sunstartwrite()
242 if (ft->encoding.bits_per_sample == 8) in sunstartwrite()
244 if (ft->encoding.encoding != SOX_ENCODING_ULAW && in sunstartwrite()
245 ft->encoding.encoding != SOX_ENCODING_ALAW) in sunstartwrite()
248 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartwrite()
251 else if (ft->encoding.bits_per_sample == 16) in sunstartwrite()
254 ft->encoding.bits_per_sample = 8; in sunstartwrite()
255 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartwrite()
259 if (ft->encoding.bits_per_sample == 8) in sunstartwrite()
262 pPriv->sample_shift = 0; in sunstartwrite()
263 if (ft->encoding.encoding == SOX_ENCODING_UNKNOWN) in sunstartwrite()
264 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartwrite()
265 else if (ft->encoding.encoding != SOX_ENCODING_ULAW && in sunstartwrite()
266 ft->encoding.encoding != SOX_ENCODING_ALAW && in sunstartwrite()
267 ft->encoding.encoding != SOX_ENCODING_SIGN2) { in sunstartwrite()
270 ft->encoding.encoding = SOX_ENCODING_ULAW; in sunstartwrite()
272 if ((ft->encoding.encoding == SOX_ENCODING_ULAW || in sunstartwrite()
273 ft->encoding.encoding == SOX_ENCODING_ALAW) && in sunstartwrite()
274 ft->signal.channels == 2) in sunstartwrite()
277 ft->signal.channels = 1; in sunstartwrite()
281 else if (ft->encoding.bits_per_sample == 16) { in sunstartwrite()
283 pPriv->sample_shift = 1; in sunstartwrite()
284 if (ft->encoding.encoding == SOX_ENCODING_UNKNOWN) in sunstartwrite()
285 ft->encoding.encoding = SOX_ENCODING_SIGN2; in sunstartwrite()
286 else if (ft->encoding.encoding != SOX_ENCODING_SIGN2) { in sunstartwrite()
289 ft->encoding.encoding = SOX_ENCODING_SIGN2; in sunstartwrite()
294 ft->encoding.bits_per_sample = 16; in sunstartwrite()
295 ft->encoding.encoding = SOX_ENCODING_SIGN2; in sunstartwrite()
297 pPriv->sample_shift = 1; in sunstartwrite()
300 if (ft->signal.channels > 1) ft->signal.channels = 2; in sunstartwrite()
303 if (ioctl(pPriv->device, AUDIO_GETINFO, &audio_if) < 0) { in sunstartwrite()
308 audio_if.play.channels = ft->signal.channels; in sunstartwrite()
309 audio_if.play.sample_rate = ft->signal.rate; in sunstartwrite()
310 if (ft->encoding.encoding == SOX_ENCODING_ULAW) in sunstartwrite()
312 else if (ft->encoding.encoding == SOX_ENCODING_ALAW) in sunstartwrite()
318 ioctl(pPriv->device, AUDIO_SETINFO, &audio_if); in sunstartwrite()
323 if (audio_if.play.channels != ft->signal.channels) { in sunstartwrite()
327 if (audio_if.play.sample_rate != ft->signal.rate) { in sunstartwrite()
336 pPriv->cOutput = sox_globals.bufsiz >> pPriv->sample_shift; in sunstartwrite()
337 pPriv->pOutput = lsx_malloc((size_t)pPriv->cOutput << pPriv->sample_shift); in sunstartwrite()
344 priv_t* pPriv = (priv_t*)ft->priv; in sunstop()
345 if (pPriv->device >= 0) { in sunstop()
346 close(pPriv->device); in sunstop()
348 if (pPriv->pOutput) { in sunstop()
349 free(pPriv->pOutput); in sunstop()
360 #define SOX_SAMPLE_TO_ULAW_BYTE(d,c) sox_14linear2ulaw(SOX_SAMPLE_TO_UNSIGNED(14,d,c) - 0x2000)
361 #define SOX_SAMPLE_TO_ALAW_BYTE(d,c) sox_13linear2alaw(SOX_SAMPLE_TO_UNSIGNED(13,d,c) - 0x1000)
365 priv_t* pPriv = (priv_t*)ft->priv; in sunread()
367 size_t cbOutputLeft = cOutput << pPriv->sample_shift; in sunread()
374 cbRead = read(pPriv->device, pbOutput, cbOutputLeft); in sunread()
382 cbOutputLeft -= cbRead; in sunread()
386 /* Convert in-place (backwards) */ in sunread()
387 cRead = cOutput - (cbOutputLeft >> pPriv->sample_shift); in sunread()
388 switch (pPriv->sample_shift) in sunread()
391 switch (ft->encoding.encoding) in sunread()
394 for (i = cRead; i != 0; i--) { in sunread()
395 pOutput[i - 1] = SOX_UNSIGNED_8BIT_TO_SAMPLE( in sunread()
396 ((sox_uint8_t*)pOutput)[i - 1], in sunread()
401 for (i = cRead; i != 0; i--) { in sunread()
402 pOutput[i - 1] = SOX_ULAW_BYTE_TO_SAMPLE( in sunread()
403 ((sox_uint8_t*)pOutput)[i - 1], in sunread()
408 for (i = cRead; i != 0; i--) { in sunread()
409 pOutput[i - 1] = SOX_ALAW_BYTE_TO_SAMPLE( in sunread()
410 ((sox_uint8_t*)pOutput)[i - 1], in sunread()
419 for (i = cRead; i != 0; i--) { in sunread()
420 pOutput[i - 1] = SOX_SIGNED_16BIT_TO_SAMPLE( in sunread()
421 ((sox_int16_t*)pOutput)[i - 1], in sunread()
435 priv_t* pPriv = (priv_t*)ft->priv; in sunwrite()
447 if (cStride > pPriv->cOutput) { in sunwrite()
448 cStride = pPriv->cOutput; in sunwrite()
451 switch (pPriv->sample_shift) in sunwrite()
454 switch (ft->encoding.encoding) in sunwrite()
458 ((sox_uint8_t*)pPriv->pOutput)[i] = in sunwrite()
464 ((sox_uint8_t*)pPriv->pOutput)[i] = in sunwrite()
470 ((sox_uint8_t*)pPriv->pOutput)[i] = in sunwrite()
480 ((sox_int16_t*)pPriv->pOutput)[i] = in sunwrite()
486 cbStride = cStride << pPriv->sample_shift; in sunwrite()
489 cbWritten = write(pPriv->device, &pPriv->pOutput[i], cbStride - i); in sunwrite()
497 cInputRemaining -= cStride; in sunwrite()