move all device related stuff from aucat.c to a new dev.c file.
authorratchov <ratchov@openbsd.org>
Thu, 14 Aug 2008 09:58:55 +0000 (09:58 +0000)
committerratchov <ratchov@openbsd.org>
Thu, 14 Aug 2008 09:58:55 +0000 (09:58 +0000)
commitdc5a7cae8b7da35182e18727f10bf3096a1616f8
tree4c1b3614839ce9d599c1ebd59e0f974d5ecac374
parent7e50537fcc72f901b172c4aad88a7986de05c727
move all device related stuff from aucat.c to a new dev.c file.
The new dev_xxx() routines expose a "high level" self-contained
interface to the device. At initialization, the device is opened
and two chains of aproc structures are created:

 * a playback chain that exposes a (initially) empty mix
   aproc to which the rest of the code can attach new
   streams to be played

 * record chain that exposes a (initially) empty sub aproc
   to which the rest of the code can attach new stream to
   to record

The rest of the code, has just to use dev_attach() routine to
attach streams. While we're at it, add a ``devops'' structure
containing pointers to the device-specific routines. This will
allow later to add support for other type of device than the
Sun API.

Also, write the .wav headers in file_del(), so put all header
related data in the file strucuture. This allows to close() the
file, as soon as wpipe_xxx() aproc terminates. This will be
useful for the server, because it will need to close() descripts
of closed connections immediately.

add mix_pushzero() routine to fill the mixer with silence. It
will be used to avoid the mixer to underrun when there are no
input streams. Since we always have at least one input stream
there's no behaviour change.

ok jakemsr
usr.bin/aucat/Makefile
usr.bin/aucat/aproc.c
usr.bin/aucat/aproc.h
usr.bin/aucat/aucat.c
usr.bin/aucat/dev.c [new file with mode: 0644]
usr.bin/aucat/dev.h
usr.bin/aucat/dev_sun.c
usr.bin/aucat/file.c
usr.bin/aucat/file.h
usr.bin/aucat/legacy.c