xref: /openbsd-src/usr.bin/sndiod/defs.h (revision d07fece68e8c883aebc7155fb3b4c23ca5dc4675)
1*d07fece6Sratchov /*	$OpenBSD: defs.h,v 1.5 2020/02/26 13:53:58 ratchov Exp $	*/
287bc9f6aSratchov /*
387bc9f6aSratchov  * Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
487bc9f6aSratchov  *
587bc9f6aSratchov  * Permission to use, copy, modify, and distribute this software for any
687bc9f6aSratchov  * purpose with or without fee is hereby granted, provided that the above
787bc9f6aSratchov  * copyright notice and this permission notice appear in all copies.
887bc9f6aSratchov  *
987bc9f6aSratchov  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1087bc9f6aSratchov  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1187bc9f6aSratchov  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1287bc9f6aSratchov  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1387bc9f6aSratchov  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1487bc9f6aSratchov  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1587bc9f6aSratchov  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1687bc9f6aSratchov  */
1787bc9f6aSratchov #ifndef DEFS_H
1887bc9f6aSratchov #define DEFS_H
1987bc9f6aSratchov 
2087bc9f6aSratchov /*
2187bc9f6aSratchov  * MIDI buffer size
2287bc9f6aSratchov  */
2387bc9f6aSratchov #define MIDI_BUFSZ		3125	/* 1 second at 31.25kbit/s */
2487bc9f6aSratchov 
2587bc9f6aSratchov /*
2663dcd07aSratchov  * units used for MTC clock. Must allow a quarter of frame to be
2763dcd07aSratchov  * represented at any of the standard 24, 25, or 30 fps.
2887bc9f6aSratchov  */
2987bc9f6aSratchov #define MTC_SEC			2400	/* 1 second is 2400 ticks */
3087bc9f6aSratchov 
3187bc9f6aSratchov /*
3287bc9f6aSratchov  * device or sub-device mode, must be a superset of corresponding SIO_
3387bc9f6aSratchov  * and MIO_ constants
3487bc9f6aSratchov  */
3587bc9f6aSratchov #define MODE_PLAY	0x01	/* allowed to play */
3687bc9f6aSratchov #define MODE_REC	0x02	/* allowed to rec */
3787bc9f6aSratchov #define MODE_MIDIOUT	0x04	/* allowed to read midi */
3887bc9f6aSratchov #define MODE_MIDIIN	0x08	/* allowed to write midi */
3987bc9f6aSratchov #define MODE_MON	0x10	/* allowed to monitor */
40*d07fece6Sratchov #define MODE_CTLREAD	0x100	/* allowed to read controls */
41*d07fece6Sratchov #define MODE_CTLWRITE	0x200	/* allowed to change controls */
4287bc9f6aSratchov #define MODE_RECMASK	(MODE_REC | MODE_MON)
4387bc9f6aSratchov #define MODE_AUDIOMASK	(MODE_PLAY | MODE_REC | MODE_MON)
4487bc9f6aSratchov #define MODE_MIDIMASK	(MODE_MIDIIN | MODE_MIDIOUT)
45*d07fece6Sratchov #define MODE_CTLMASK	(MODE_CTLREAD | MODE_CTLWRITE)
4687bc9f6aSratchov 
4787bc9f6aSratchov /*
4887bc9f6aSratchov  * underrun/overrun policies, must be the same as SIO_ constants
4987bc9f6aSratchov  */
5087bc9f6aSratchov #define XRUN_IGNORE	0	/* on xrun silently insert/discard samples */
5187bc9f6aSratchov #define XRUN_SYNC	1	/* catchup to sync to the mix/sub */
5287bc9f6aSratchov #define XRUN_ERROR	2	/* xruns are errors, eof/hup buffer */
5387bc9f6aSratchov 
5487bc9f6aSratchov /*
5587bc9f6aSratchov  * limits
5687bc9f6aSratchov  */
575db31a1aSratchov #define NCHAN_MAX	64		/* max channel in a stream */
5887bc9f6aSratchov #define RATE_MIN	4000		/* min sample rate */
5987bc9f6aSratchov #define RATE_MAX	192000		/* max sample rate */
6087bc9f6aSratchov #define BITS_MIN	1		/* min bits per sample */
6187bc9f6aSratchov #define BITS_MAX	32		/* max bits per sample */
6287bc9f6aSratchov 
6387bc9f6aSratchov #endif /* !defined(DEFS_H) */
64