Age | Commit message (Collapse) | Author |
|
|
|
|
|
than a single one. No behaviour change
|
|
calls to sio_<backend>_open(). No behaviour change
|
|
device names
|
|
code. This is simpler as long as not all backends use the same
default.
|
|
when the server and the client are not of the same endianness.
Found by naddy.
|
|
|
|
work over TCP, for instance, to expose the sound card of one machine
with other machines of the network.
The first client generates a 128-bit random number (aka the
session cookie), saves it in $HOME/.aucat_cookie and sends it to the
server. Successive clients load the cookie from $HOME/.aucat_cookie
and send it to the server but the server accepts only clients whose
cookie matches the session cookie. When all clients are gone, the
session is over, and another cookie could start a new session, and so
on.
TCP is enabled on the server with the new -L option, and on the client
side hostnames are specified with a new optional component in the
device name.
hints from damien, dlg and deraadt, tweaks from jmc
|
|
requested by deraadt
|
|
protocol specific code. No behaviour change
|
|
Besides being wrong, they are part of sndio internals and don't need
to be exposed in such a high level man page.
|
|
macros instead of hardcoded strings. No object change
|
|
need to query the server for supported parameters. So stop using the
AMSG_GETCAP message, and remove it completely from the aucat protocol.
|
|
with the server. As we're at it use the same protocol for midi and
audio. Now, both audio and midi code use the same SNDIO_DEBUG environment
variable to turn on/off DPRINTF's.
|
|
them in files named mio_<backend>.c
No behaviour change.
|
|
audio-related functions and put them in files named sio_<backend>.c
No behaviour changes.
|
|
|
|
is available for the stream. As we're at it, remove macros and
functions that are neither used nor documented.
|
|
|
|
AMSG_xxx macros, which in turns simplifies the code
|
|
and don't generate clock ticks (ie don't invoke the sio_onmove(3)
call-back).
|
|
fix NULL vs 0, etc. No behaviour change.
|
|
now), play and record directons may be out of sync, and since the play
direction is used as clock source, we may end up with data ariving
_before_ the time it was recorded. This breaks the sndio ``device
model'' and most full-duplex apps relying on it, starting with aucat
in its default mode.
Workaround this by using the direction that's ahead as clock source,
ensuring that recorded data never arrives before the clock tick it was
recorded. This prevents apps from crashing but won't fix stuttering
caused by missed interrupts.
ok deraadt@
|
|
from Remco <remco at d-compu.dyndns.org>, thanks!
|
|
for both structs, the new members are 'bps' and 'msb', which
describe the number of bytes per sample and data alignment in the
sample, respectively. drivers must properly set these fields in
the 'query_encoding', 'set_parameters' and 'get_default_params'
hardware interface methods.
discussed with ratchov, deraadt
|
|
difference between audio files and client connections. Clean up
the way command line options are handled and clarify this in the
manual page: stream parameters (-Ccehjmrtvx) must precede stream
definitions (-ios) and per-device parameters (-abz) and stream
definitions (-ios) must precede device definitions (-f). Since
there's no ``server'' and ``non-server'' modes anymore, make the
-l option just detach the process.
ok and help from jakemsr and jmc
|
|
complicated. Instead, request clients to provide enough samples
and start with buffers full.
|
|
|
|
Add a new ``initial position'' message which is simpler. No bahaviour
change, except effects of the protocol version crank.
|
|
|
|
full-duplex, we may detect a xrun in the play direction and discard
the clock tick, this would cause sio_revents() to return POLLIN
without the clock being advanced, causing apps relying on the clock
for flow control to enter a busy loop.
|
|
requested sample rate, scale the block/buffer sizes so the block/
buffer sizes the hardware will use are the same amount of *time*
as the requested block/buffer sizes.
ok ratchov@
|
|
already paused (by either sio_open or sio_stop)
from Alexandr Shadchin, thanks!
|
|
changed until after sio_stop() is called
ok ratchov@, jmc@
|
|
descriptor is closed. Fix from Alexandr Shadchin, together with
various simplifications.
|
|
From Alexandr Shadchin <alexandr.shadchin at gmail.com>
Good catch!
|
|
play parameters are set only if playback is enabled, and record
parameters are set only if recording is enabled. Fixes
sun_getcap() on devices whose play and record parameters are not
independent.
|
|
set record precision.
|
|
|
|
run by root, it binds a shared address to the socket, cranks the
process priority and drops privileges. sio_open(3) will try to
connect to the private socket first (if any), then to the shared
socket. Only one user may have connections to aucat at a given
time.
based on discussions with henning, pyr and others
ok jacek, deraadt
|
|
started immediately after it's opened in record only mode.
Pause it in sio_open() and sio_stop(), since libsndio requires
an explicit call to sio_start().
discussed with jakemsr
|
|
- make the ``-m mode'' option per subdevice, allowing
subdevices to be play-only or rec-only even if the
server is full-duplex
- add ``monitoring'' mode (with ``-m mon''). This is a
record-only stream from which played streams can be
recorded (kind of ``record what you hear'').
- allow MIDI devices to be subscribed to the controlling
MIDI port of the server, ie what midicat does (with -f
option), but using the -q option.
- add flow control to the protocol, and serialize clock
ticks (sio_onmove() calls) and data chunks. This should
fix certain full-duplex programs, broken with ``magic''
block/buffer size combinations.
- enable 3 block latency which is the minimum theoretical.
Make -z and -b options correspond to device parameters.
- make sio_getcap(3) the same for aucat and sun backends,
ie return whatever is supported (``everything'' in the
aucat case, since everything is actulally supported).
aucat (player):
- enable ``-m mode'' option to select between monitoring
and recording when ``-o file'' is used.
- plug MIDI code to non-server codepath. The MIDI control
device is specified with the ``-q device'' option, as in
server mode.
- impliment lseek()'ing within files (controlled
through MIDI). Necessary to use aucat with a MIDI
sequencer.
midicat (thrubox):
- rename ``-f'' flag to ``-q'', so it has the
same name as in aucat (-f is still working)
ok jakemsr@, tweaks from jmc@
|
|
with precision other than 8, 16 or 32 bits.
Found by Jan Stary <hans at stare.cz>, thanks!
|
|
ok ratchov
|
|
can return POLLOUT (if requested), even the handle was not writable when
sio_pollfd() was called but become writable somewhere in the code path
of sio_revents().
This should improve stability of programs using very small buffers.
|
|
called. Since sio_onmove() callback doesn't return negative deltas
anymore, slightly simplify related paragraphs.
siggested by espie@, ok jakemsr@
|
|
don't call the sio_onmove() call-back with negative argument.
|
|
precision / 8. Fixes sio_setpar() requesting smaller block sizes
on 24-bit devices.
|
|
entering a busy loop
|