Commit Graph

780 Commits

Author SHA1 Message Date
Alexandre Ratchov 798435b1dc Tweak RETURN VALUES section. Move description of sio_pollfd() and
sio_nfds() return values there and add a paragraph about sio_eof().
From natano@.
2017-03-27 14:05:51 +02:00
Alexandre Ratchov f6579c4341 Use the right header sizes for reading .aiff and .au files.
From nicm@.
2017-03-27 13:58:46 +02:00
Alexandre Ratchov f49f0ccd14 remove socket_cloexec() and use fcntl with the necessary ifdefery 2017-03-27 12:52:56 +02:00
Alexandre Ratchov 7d804be937 tweak spacing 2017-03-27 12:46:22 +02:00
Alexandre Ratchov d6e9a73e41 add missing -DHAVE_CLOCK_GETTIME 2017-03-27 12:40:19 +02:00
Alexandre Ratchov 2a2e27b4c7 add missing includes 2017-03-27 12:39:56 +02:00
Alexandre Ratchov a48a424901 add portability bits for OS X 2017-03-27 12:34:26 +02:00
Alexandre Ratchov f9f2d8353e Fix the code to abort when trying to detach a slot that's not
on the list (the check was a no-op). Found by jsg@, thanks.
2017-02-15 11:58:54 +01:00
Alexandre Ratchov ca24b960e4 reorder deps in Makefile.in 2017-02-14 14:34:28 +01:00
Alexandre Ratchov 3d710ac721 Use -io options to specify files and -q option to specify one
or two ports, allowing port-to-port transfers.
2017-01-18 10:26:27 +01:00
Alexandre Ratchov 044421aad7 Include sys/socket.h to minimize differences with pledged code 2017-01-03 08:50:48 +01:00
Alexandre Ratchov 2f5165d92f sync utils.c to sndiod one 2017-01-03 08:20:49 +01:00
Alexandre Ratchov 209e88bbde Use a goto to factor all calls to close() when listen_in() returns
an error. From Michael W. Bombardieri. Thanks.
2017-01-03 08:10:11 +01:00
Alexandre Ratchov 22a64d1845 Many typos in comments. From Michael W. Bombardieri. Thanks. 2017-01-03 08:08:17 +01:00
Alexandre Ratchov 6c1c0d3ff6 Remove unnecessary includes. From Michael W. Bombardieri <mb at ii.net>. 2017-01-03 08:05:41 +01:00
Alexandre Ratchov 474ac8d426 log file volume 2017-01-03 07:28:52 +01:00
Alexandre Ratchov 2606d3f24e Add support for FreeBSD raw usb-midi devices. Bits from Tobias
Kortkamp <t@tobik.me> plus configure script tweaks.
2016-11-06 12:21:59 +01:00
Alexandre Ratchov 9cb5193ca7 sio_oss.c: In full duplex-mode, don't require play and rec
buffer sizes to be the same. Only the block sizes need to be the
same.
2016-11-05 07:21:28 +01:00
Alexandre Ratchov 8c95537698 sio_oss.c: Disallow tiny fragment sizes, as they may overload
the system. And as sndiod runs with increased priority, it would
consume all the cpu and could in turn hang the system.
2016-11-05 07:14:46 +01:00
Alexandre Ratchov c25d86c7db sio_oss.c: if the requrested block size is a power of two
make the oss block size calculation return the requested value.
2016-11-05 07:11:08 +01:00
Alexandre Ratchov 4f56ff6181 In sio_oss_revents() use the fifo_samples counter returned
by SNDCTL_DSP_CURRENT_{I,O}PTR to determine the device current
position. Besides being simpler than using the absolute position,
this fixes hangs in record-only mode.
2016-11-05 07:02:39 +01:00
Alexandre Ratchov c5daeee294 On OSS/FreeBSD, set poll(2) threshold to 1 byte, so that it returs
POLLIN/POLLOUT whenever read/write can be called without blocking. By
default OSS use 1 block of threshold.
2016-11-04 19:12:07 +01:00
Alexandre Ratchov 2b58ec0677 Remove forgotten debug printf in sio_oss.c 2016-11-04 14:14:52 +01:00
Alexandre Ratchov db20298468 Use the SNDCTL_DSP_SETTRIGGER interface to start/stop the device, this
allows the "onmove" callback to be called whenever the DMA actually
starts (and not on the first write). This also removes the need for
sio_osee_setpar() call every time the device is stopped.
2016-11-04 14:09:42 +01:00
Alexandre Ratchov 9be2c65600 Allow programs using OSS/FreeBSD backend to select the buffer size.
According to kernel sources, SNDCTL_DSP_POLICY ioctl doesn't seem to
always set play and rec buffer sizes to the same value.  That's why we
use the SNDCTL_DSP_SETFRAGMENT ioctl instead.
2016-11-04 11:03:41 +01:00
Alexandre Ratchov a282420a49 In OSS/FreeBSD sio_setpar(), validate the encoding, ensuring we
never end-up with an unknown one.
2016-11-04 09:18:04 +01:00
Alexandre Ratchov 4d6d7700a4 Make sio_getpar() on OSS/FreeBSD return the device block size/count
instead of saved ones. Fixes busy loops caused by poll(2) returning
POLLOUT after the program has filled its play buffer.
2016-11-04 08:05:47 +01:00
Alexandre Ratchov e867d773fa Tweak spacing of sio_oss.c to look more like other files. 2016-11-03 08:09:11 +01:00
Alexandre Ratchov d396d690d1 Add support for OSS/FreeBSD. From Tobias Kortkamp <t@tobik.me>. 2016-11-03 08:04:47 +01:00
Alexandre Ratchov bcb3014206 Fix many typos in comments, from Michael W. Bombardieri <mb at ii.net> 2016-10-27 06:38:21 +02:00
Alexandre Ratchov 017e60c967 use setgid() and setuid() 2016-10-24 17:05:47 +02:00
Alexandre Ratchov 4dcfed9dce remove braces around single-statement block 2016-10-20 07:32:27 +02:00
Alexandre Ratchov 33bbca5999 drop privs after daemonizing, reorder clean-up 2016-10-20 07:27:36 +02:00
Alexandre Ratchov 7061de0250 Set device rate to calculated rate. 2016-09-30 11:01:25 +02:00
Alexandre Ratchov 2a451f9623 Fix many typos, from Michael W. Bombardieri <mb at ii.net>, thanks 2016-09-27 14:18:43 +02:00
Alexandre Ratchov 7ddb1a5fe5 Don't rely on the resampling code to calculate the number of samples
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-09-27 09:01:21 +02:00
Alexandre Ratchov 02ff6b20fb add braces to reduce diff with mixer bits 2016-08-11 08:17:57 +02:00
Alexandre Ratchov 61005799d9 simpler resampler 2016-06-09 16:50:56 +02:00
Alexandre Ratchov 10f6027f0f remove unused fields of resamp structure 2016-06-09 16:43:47 +02:00
Alexandre Ratchov b5ed742559 remove forgotten debug printfs 2016-06-08 06:41:08 +02:00
Alexandre Ratchov 00ffc8f5ab Add resamp_getcnt() routine to calculate the exact number of samples
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-07 08:11:46 +02:00
Alexandre Ratchov 2562fa7eb4 add -g and -p option to control device and file start position 2016-06-02 18:14:10 +02:00
Alexandre Ratchov a6fdc3b5ed remove forgotten debug printfs 2016-06-02 07:30:30 +02:00
Alexandre Ratchov 474f0ce009 set exit status to 1 if -n is used without -i and -o 2016-06-02 07:07:58 +02:00
Alexandre Ratchov c22cfa6294 sync to openbsd: remove again intermediate conversion to mtc time 2016-06-02 06:55:59 +02:00
Alexandre Ratchov aaf9583451 backout latest 2016-05-31 23:25:38 +02:00
Alexandre Ratchov 751fe73f18 backout mtc units removal 2016-05-31 23:21:15 +02:00
Alexandre Ratchov 2ce73a1421 Pass hr:min:sec:frame.cent to dev_mmcloc() and remove useless
intermediate conversion to 2400-th of second.
2016-05-31 11:24:42 +02:00
Alexandre Ratchov 0798868306 To store MMC position, use samples (at device rate) as time units
instead of 2400-ths of second. No behaviour change.
2016-05-31 10:37:17 +02:00
Alexandre Ratchov e606351421 Fix file block size rounding and ensure it's large enough to store a
full audio block.
2016-05-28 09:28:57 +02:00