Age | Commit message (Collapse) | Author |
|
|
|
|
|
single aucat instance to handle all audio and MIDI services. Since
this partially breaks compatibility, this is a opportunitiy to fix few
other design mistakes (eg ':' being used by inet6, type name vs api
name confusion, etc..). This leads to the following names:
type[@hostname][,unit]/devnum[.option]
The device number is the minor device number for direct hardware
access (ie the 'N' in /dev/audioN). For aucat, this is the occurence
number of the -f (or -M) option.
There's a compatibility hook to keep old names working if only one
aucat server is running.
|
|
and fixed by Remco <remco at d-compu.dyndns.org>, thanks!
|
|
|
|
with almost the same syntax (roughly an extra -M option).
Thru boxes are created with aucat, and corresponding MIDI port
names have the "aucat" prefix instead of "midithru". The old
device name will still work some time for backward compatibility.
ok deraadt
|
|
|
|
|
|
|
|
|
|
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
|