summaryrefslogtreecommitdiff
path: root/usr.bin/aucat/aucat.c
AgeCommit message (Collapse)Author
2019-05-19Fix integer overflow in block size calculation.Alexandre Ratchov
Fixes truncation of contents of files with rate above 64kHz generate in off-line mode (i.e. -n option).
2019-02-21Use reallocarray in place of malloc(a * b) to handle possibleAlexandre Ratchov
overflow in multiplication of malloc argument.
2018-05-13Add missing pledge(). From Jesper Wallin <jesper at ifconfig.se>.Alexandre Ratchov
Thanks!
2017-11-07prefill with silence the buffer where cmap_copy() stores samplesAlexandre Ratchov
rather than the file buffer. Fixes initialized data being treated as recorded samples when resampling or format conversions are involved but mono->stereo conversion is disabled.
2017-11-03Prefill rec buffer with silence. This is necessary because certainAlexandre Ratchov
channels don't get samples, for instance when mono->stereo conversion is disabled.
2017-07-20Fix integer overflow that would causes >12 hours filesAlexandre Ratchov
to not properly relocate. Found with coverity.
2017-01-03Assert we're not freeing buffers we didn't allocate (DEBUG mode).Alexandre Ratchov
2017-01-03Log play volume together with other play parameters.Alexandre Ratchov
2016-09-30Set the device rate to the calculated rate. Otherwise, the signalAlexandre Ratchov
may endup resampled twice.
2016-09-30Remove unnecessary includes. From Michael W. Bombardieri <mb at ii.net>.Alexandre Ratchov
2016-09-27Don't rely on the resampling code to calculate the number of samplesAlexandre Ratchov
to process, as it may produce one extra sample (to handle accumulation of fractional samples), which would cause access to one sample past the end of the buffer and crash aucat. Fix this by limiting the number of samples processed to a single block. Found by and help from Michael W. Bombardieri <mb at ii.net>. Thanks.
2016-06-07Add -g and -p options to control device and file start position.Alexandre Ratchov
2016-06-07Add resamp_getcnt() routine to calculate the exact number of samplesAlexandre Ratchov
that would be consumed and produced by the sampler rate converter. Use it to avoid partial samples that are not properly handled. Fixes last samples of certain files causing aucat to abort.
2016-06-02remove forgotten debug printfsAlexandre Ratchov
2016-06-02set exit status to 1 if -n is used without -i and -oAlexandre Ratchov
2016-05-31Pass hr:min:sec:frame.cent to dev_mmcloc() directly and remove theAlexandre Ratchov
useless intermediate conversion from and to 2400-th of seconds.
2016-05-31To store MMC position, use samples (at device rate) as time unitsAlexandre Ratchov
instead of 2400-ths of second. No behaviour change.
2016-05-28Fix file block size rounding and ensure it's large enough to store aAlexandre Ratchov
full audio block.
2016-05-27When resampling, use the exact resampling factor instead of the ratioAlexandre Ratchov
between input and output block sizes. This was inherited from sndiod, but is not required for files because they are continuous streams of samples and do not need to be split in blocks of equal duration. This change makes playback/recording rate match exactly the requested sample rate.
2016-05-27Flush rec buffer if there's less than one block space left and refillAlexandre Ratchov
play buffer if there's less than one block of data left. This is the correct condition in the general case. No behaviour change, as all input/output is multiple of the block size.
2016-05-27Simplify slot_fill() and slot_flush(). No behaviour changeAlexandre Ratchov
2016-05-27Make resamp_do() get the exact number input and output samples andAlexandre Ratchov
provide routines to calculate them. This way we don't rely on it to calculate the bytes procuded/consumed anymore. No behaviour change.
2016-05-26Make format conversion routines return the number of framesAlexandre Ratchov
consumed from both input and output buffers. No behaviour change.
2016-01-29Check that byte order is native only if we're using more than oneAlexandre Ratchov
byte per sample, check that samples are lsb-aligned only if there's padding. Fixes unsupported parameters not being detected if compiled in 24-bit mode and sndiod is not running.
2016-01-10trailing spaces, fit in 80 columnsAlexandre Ratchov
2015-11-09Remove xfree(). From Michael W. Bombardieri.mmcc
ok ratchov@
2015-08-27fix typos in comments and error messagesAlexandre Ratchov
2015-05-16Call slot_stop() after the play buffer is drained to properly cleanupAlexandre Ratchov
the slot. Fixes periodic glitches occurring after eof is reached, and then playback restarted with a MMC-relocate and MMC-start.
2015-01-21fix macro breakage and update usage();Jason McIntyre
2015-01-21Simplify internals and rewrite file header parsing code:Alexandre Ratchov
- remove -M, -t, -w, -C, -x flags that don't make sense anymore - make "-j off" the default (sndiod already does the job) - don't limit the number of played/recorded files. - add support for floating-point encoded files. - add support for apple .aiff and sun/next .au files
2015-01-16Replace <sys/param.h> with <limits.h> and other less dirty headers whereTheo de Raadt
possible. Annotate <sys/param.h> lines with their current reasons. Switch to PATH_MAX, NGROUPS_MAX, HOST_NAME_MAX+1, LOGIN_NAME_MAX, etc. Change MIN() and MAX() to local definitions of MINIMUM() and MAXIMUM() where sensible to avoid pulling in the pollution. These are the files confirmed through binary verification. ok guenther, millert, doug (helped with the verification protocol)
2013-11-18remove unused variablesAlexandre Ratchov
2013-11-18add missing prototypesAlexandre Ratchov
2013-11-12remove bogus legacy server-specific bits that cause confusionAlexandre Ratchov
2012-12-03Remove server capability description from the documentation and fromAlexandre Ratchov
the usage string, and just say that for historic reasons aucat behaves like sndiod. with help from jmc@
2012-11-23Since there's no sndiod -> aucat link anymore, allow aucat to be runAlexandre Ratchov
in server mode even when not invoked as sndiod. This allows aucat and the new sndiod daemon to live together in /usr/bin, which makes easy to quickly compare sndiod and aucat (and spot possible regressions) without having to modify /usr/bin.
2012-10-27don't stat & test sndio home directory since we never use it.Alexandre Ratchov
2012-10-27don't (re-)define SNDIO_USER and SNDIO_PRIO if they are already defined,Alexandre Ratchov
this way they can be defined at compilation time
2012-06-27Uniformize error messages printing, use err() instead of fprintf()Alexandre Ratchov
when appropriate. From Michael W. Bombardieri <mb at ii.net>
2012-06-19Remove hidden options that are not needed any more,Alexandre Ratchov
from Remco <remco at d-compu.dyndns.org>. Thanks
2012-05-23Make the "default" string a valid device name that has the same effectAlexandre Ratchov
as NULL has. This will (hopefully) simplify ports where the user passes the device string.
2012-04-11Use "unsigned int" rather than "unsigned". No object change.Alexandre Ratchov
suggested by deraadt@
2012-02-09Crank the default buffer size to 160ms (ie 7680 frames at 48kHz).Alexandre Ratchov
Workarounds stuttering caused by something hogging the cpu in kernel mode and preventing sndiod from running at time. ok deraadt
2012-01-26Make the default rate 48kHz and the default block size 10ms. TheseAlexandre Ratchov
settings ensure video players and programs using MTC are smooth by default. Thanks to all who tested.
2012-01-10When a sub-device is created (-s), check if a hardwareAlexandre Ratchov
device was already created (-f) before trying to use the default one, otherwise all sub-devices end up attached to the default device. Noticed by peters at schwertfisch.de, thanks!
2011-12-09fix usage string: remove -M from aucat and -l from aucat and sndiodAlexandre Ratchov
from jmc
2011-12-09add a new sndiod audio/midi daemon and hide aucat server-specificAlexandre Ratchov
options.
2011-12-02don't use a "server" flag, just check if we expose sub-devicesAlexandre Ratchov
2011-12-02reuse midi-control code to implement midi thru boxes and removeAlexandre Ratchov
the old midithru implementation; less code, less bugs. As a side effect, midi output doesn't implement running status "compression" any more.
2011-11-20Move mmc/mtc and volume control bits from struct aproc to structAlexandre Ratchov
dev. Allows volume settings to be saved while the device is kept closed. Besides that, no behabiour changes.