155118Storek /*
255118Storek  * Copyright (c) 1991, 1992 The Regents of the University of California.
355118Storek  * All rights reserved.
455118Storek  *
555118Storek  * This software was developed by the Computer Systems Engineering group
655118Storek  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
755118Storek  * contributed to Berkeley.
855118Storek  *
955501Sbostic  * All advertising materials mentioning features or use of this software
1055501Sbostic  * must display the following acknowledgement:
1155501Sbostic  *	This product includes software developed by the University of
12*59197Storek  *	California, Lawrence Berkeley Laboratory.
1355501Sbostic  *
1455118Storek  * %sccs.include.redist.c%
1555118Storek  *
16*59197Storek  *	@(#)bsd_audioio.h	7.3 (Berkeley) 04/20/93
1755118Storek  *
18*59197Storek  * from: $Header: bsd_audioio.h,v 1.5 92/11/21 20:46:46 van Exp $ (LBL)
1955118Storek  */
2055118Storek 
2155118Storek #ifndef _BSD_AUDIOIO_H_
2255118Storek #define _BSD_AUDIOIO_H_
2355118Storek 
2455118Storek /*
2555118Storek  * /dev/audio ioctls.  needs comments!
2655118Storek  */
27*59197Storek #define AUDIO_MIN_GAIN (0)
28*59197Storek #define AUDIO_MAX_GAIN (255)
2955118Storek 
30*59197Storek #define AUDIO_ENCODING_ULAW (1)
31*59197Storek #define AUDIO_ENCODING_ALAW (2)
3255118Storek 
3355118Storek struct audio_prinfo {
3455118Storek 	u_int	sample_rate;
3555118Storek 	u_int	channels;
3655118Storek 	u_int	precision;
3755118Storek 	u_int	encoding;
3855118Storek 	u_int	gain;
3955118Storek 	u_int	port;
40*59197Storek 	u_long	seek;		/* BSD extension */
41*59197Storek 	u_int	ispare[3];
4255118Storek 	u_int	samples;
43*59197Storek 	u_int	eof;
4455118Storek 
4555118Storek 	u_char	pause;
4655118Storek 	u_char	error;
4755118Storek 	u_char	waiting;
48*59197Storek 	u_char	cspare[3];
4955118Storek 	u_char	open;
50*59197Storek 	u_char	active;
5155118Storek 
5255118Storek };
5355118Storek 
5455118Storek struct audio_info {
5555118Storek 	struct	audio_prinfo play;
5655118Storek 	struct	audio_prinfo record;
5755118Storek 	u_int	monitor_gain;
5855118Storek 	/* BSD extensions */
5955118Storek 	u_int	blocksize;	/* input blocking threshold */
6055118Storek 	u_int	hiwat;		/* output high water mark */
6155118Storek 	u_int	lowat;		/* output low water mark */
62*59197Storek 	u_int	backlog;	/* samples of output backlog to gen. */
6355118Storek };
6455118Storek typedef struct audio_info audio_info_t;
6555118Storek 
6655118Storek #define AUDIO_INITINFO(p)\
6755118Storek 	(void)memset((void *)(p), 0xff, sizeof(struct audio_info))
6855118Storek 
6955118Storek #if (defined(sun) || defined(ibm032)) && !defined(__GNUC__)
70*59197Storek #define AUDIO_GETINFO	_IOR(A, 21, struct audio_info)
71*59197Storek #define AUDIO_SETINFO	_IOWR(A, 22, struct audio_info)
72*59197Storek #define AUDIO_DRAIN	_IO(A, 23)
73*59197Storek #define AUDIO_FLUSH	_IO(A, 24)
74*59197Storek #define AUDIO_WSEEK	_IOR(A, 25, u_long)
75*59197Storek #define AUDIO_RERROR	_IOR(A, 26, int)
76*59197Storek #define AUDIO_GETMAP	_IOR(A, 27, struct mapreg)
77*59197Storek #define	AUDIO_SETMAP	_IOW(A, 28, struct mapreg)
7855118Storek #else
79*59197Storek #define AUDIO_GETINFO	_IOR('A', 21, struct audio_info)
80*59197Storek #define AUDIO_SETINFO	_IOWR('A', 22, struct audio_info)
81*59197Storek #define AUDIO_DRAIN	_IO('A', 23)
82*59197Storek #define AUDIO_FLUSH	_IO('A', 24)
83*59197Storek #define AUDIO_WSEEK	_IOR('A', 25, u_long)
84*59197Storek #define AUDIO_RERROR	_IOR('A', 26, int)
85*59197Storek #define AUDIO_GETMAP	_IOR('A', 27, struct mapreg)
86*59197Storek #define	AUDIO_SETMAP	_IOW('A', 28, struct mapreg)
8755118Storek #endif
8855118Storek 
8955118Storek #define AUDIO_SPEAKER   	1
9055118Storek #define AUDIO_HEADPHONE		2
9155118Storek 
9255118Storek /*
9355118Storek  * Low level interface.
9455118Storek  */
9555118Storek struct mapreg {
9655118Storek 	u_short	mr_x[8];
9755118Storek 	u_short	mr_r[8];
9855118Storek 	u_short	mr_gx;
9955118Storek 	u_short	mr_gr;
10055118Storek 	u_short	mr_ger;
10155118Storek 	u_short	mr_stgr;
10255118Storek 	u_short	mr_ftgr;
10355118Storek 	u_short	mr_atgr;
10455118Storek 	u_char	mr_mmr1;
10555118Storek 	u_char	mr_mmr2;
10655118Storek };
10755118Storek 
10855118Storek #endif /* _BSD_AUDIOIO_H_ */
109