[BACK]Return to audioio.h CVS log [TXT][DIR] Up to [local] / sys / sys

Annotation of sys/sys/audioio.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: audioio.h,v 1.16 2005/12/14 13:59:04 fgsch Exp $      */
        !             2: /*     $NetBSD: audioio.h,v 1.24 1998/08/13 06:28:41 mrg Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1991-1993 Regents of the University of California.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  * 3. All advertising materials mentioning features or use of this software
        !            17:  *    must display the following acknowledgement:
        !            18:  *     This product includes software developed by the Computer Systems
        !            19:  *     Engineering Group at Lawrence Berkeley Laboratory.
        !            20:  * 4. Neither the name of the University nor of the Laboratory may be used
        !            21:  *    to endorse or promote products derived from this software without
        !            22:  *    specific prior written permission.
        !            23:  *
        !            24:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            25:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            26:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            27:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            28:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            29:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            30:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            32:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            33:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            34:  * SUCH DAMAGE.
        !            35:  *
        !            36:  */
        !            37:
        !            38: #ifndef _SYS_AUDIOIO_H_
        !            39: #define _SYS_AUDIOIO_H_
        !            40:
        !            41: /*
        !            42:  * Audio device
        !            43:  */
        !            44: struct audio_prinfo {
        !            45:        u_int   sample_rate;    /* sample rate in bit/s */
        !            46:        u_int   channels;       /* number of channels, usually 1 or 2 */
        !            47:        u_int   precision;      /* number of bits/sample */
        !            48:        u_int   encoding;       /* data encoding (AUDIO_ENCODING_* below) */
        !            49:        u_int   gain;           /* volume level */
        !            50:        u_int   port;           /* selected I/O port */
        !            51:        u_int   seek;           /* BSD extension */
        !            52:        u_int   avail_ports;    /* available I/O ports */
        !            53:        u_int   buffer_size;    /* total size audio buffer */
        !            54:        u_int   _ispare[1];
        !            55:        /* Current state of device: */
        !            56:        u_int   samples;        /* number of samples */
        !            57:        u_int   eof;            /* End Of File (zero-size writes) counter */
        !            58:        u_char  pause;          /* non-zero if paused, zero to resume */
        !            59:        u_char  error;          /* non-zero if underflow/overflow occurred */
        !            60:        u_char  waiting;        /* non-zero if another process hangs in open */
        !            61:        u_char  balance;        /* stereo channel balance */
        !            62:        u_char  cspare[2];
        !            63:        u_char  open;           /* non-zero if currently open */
        !            64:        u_char  active;         /* non-zero if I/O is currently active */
        !            65: };
        !            66: typedef struct audio_prinfo audio_prinfo_t;
        !            67:
        !            68: struct audio_info {
        !            69:        struct  audio_prinfo play;      /* Info for play (output) side */
        !            70:        struct  audio_prinfo record;    /* Info for record (input) side */
        !            71:
        !            72:        u_int   monitor_gain;   /* input to output mix */
        !            73:        /* BSD extensions */
        !            74:        u_int   blocksize;      /* H/W read/write block size */
        !            75:        u_int   hiwat;          /* output high water mark */
        !            76:        u_int   lowat;          /* output low water mark */
        !            77:        u_int   _ispare1;
        !            78:        u_int   mode;           /* current device mode */
        !            79: #define AUMODE_PLAY    0x01
        !            80: #define AUMODE_RECORD  0x02
        !            81: #define AUMODE_PLAY_ALL        0x04    /* don't do real-time correction */
        !            82: };
        !            83: typedef struct audio_info audio_info_t;
        !            84:
        !            85: #define AUDIO_INITINFO(p) \
        !            86:        (void)memset((void *)(p), 0xff, sizeof(struct audio_info))
        !            87:
        !            88: /*
        !            89:  * Parameter for the AUDIO_GETDEV ioctl to determine current
        !            90:  * audio devices.
        !            91:  */
        !            92: #define MAX_AUDIO_DEV_LEN      16
        !            93: typedef struct audio_device {
        !            94:        char name[MAX_AUDIO_DEV_LEN];
        !            95:        char version[MAX_AUDIO_DEV_LEN];
        !            96:        char config[MAX_AUDIO_DEV_LEN];
        !            97: } audio_device_t;
        !            98:
        !            99: typedef struct audio_offset {
        !           100:        u_int   samples;        /* Total number of bytes transferred */
        !           101:        u_int   deltablks;      /* Blocks transferred since last checked */
        !           102:        u_int   offset;         /* Physical transfer offset in buffer */
        !           103: } audio_offset_t;
        !           104:
        !           105: /*
        !           106:  * Supported audio encodings
        !           107:  */
        !           108: /* Encoding ID's */
        !           109: #define        AUDIO_ENCODING_NONE             0 /* no encoding assigned */
        !           110: #define        AUDIO_ENCODING_ULAW             1 /* ITU G.711 mu-law */
        !           111: #define        AUDIO_ENCODING_ALAW             2 /* ITU G.711 A-law */
        !           112: #define        AUDIO_ENCODING_PCM16            3 /* signed linear PCM, obsolete */
        !           113: #define AUDIO_ENCODING_LINEAR          AUDIO_ENCODING_PCM16 /* SunOS compat */
        !           114: #define        AUDIO_ENCODING_PCM8             4 /* unsigned linear PCM, obsolete */
        !           115: #define AUDIO_ENCODING_LINEAR8         AUDIO_ENCODING_PCM8 /* SunOS compat */
        !           116: #define        AUDIO_ENCODING_ADPCM            5 /* adaptive differential PCM */
        !           117: #define AUDIO_ENCODING_SLINEAR_LE      6
        !           118: #define AUDIO_ENCODING_SLINEAR_BE      7
        !           119: #define AUDIO_ENCODING_ULINEAR_LE      8
        !           120: #define AUDIO_ENCODING_ULINEAR_BE      9
        !           121: #define AUDIO_ENCODING_SLINEAR         10
        !           122: #define AUDIO_ENCODING_ULINEAR         11
        !           123: #define AUDIO_ENCODING_MPEG_L1_STREAM  12
        !           124: #define AUDIO_ENCODING_MPEG_L1_PACKETS 13
        !           125: #define AUDIO_ENCODING_MPEG_L1_SYSTEM  14
        !           126: #define AUDIO_ENCODING_MPEG_L2_STREAM  15
        !           127: #define AUDIO_ENCODING_MPEG_L2_PACKETS 16
        !           128: #define AUDIO_ENCODING_MPEG_L2_SYSTEM  17
        !           129: #define AUDIO_ENCODING_MPEG_L3_STREAM  18
        !           130: #define AUDIO_ENCODING_MPEG_L3_PACKETS 19
        !           131: #define AUDIO_ENCODING_MPEG_L3_SYSTEM  20
        !           132:
        !           133: typedef struct audio_encoding {
        !           134:        int     index;
        !           135:        char    name[MAX_AUDIO_DEV_LEN];
        !           136:        int     encoding;
        !           137:        int     precision;
        !           138:        int     flags;
        !           139: #define AUDIO_ENCODINGFLAG_EMULATED 1 /* software emulation mode */
        !           140: } audio_encoding_t;
        !           141:
        !           142: /*
        !           143:  * Balance settings.
        !           144:  */
        !           145: #define        AUDIO_LEFT_BALANCE      0       /* left channel only    */
        !           146: #define        AUDIO_MID_BALANCE       32      /* equal left/right channel */
        !           147: #define        AUDIO_RIGHT_BALANCE     64      /* right channel only   */
        !           148: #define        AUDIO_BALANCE_SHIFT     3
        !           149:
        !           150: /*
        !           151:  * Output ports
        !           152:  */
        !           153: #define        AUDIO_SPEAKER           0x01    /* built-in speaker */
        !           154: #define        AUDIO_HEADPHONE         0x02    /* headphone jack */
        !           155: #define        AUDIO_LINE_OUT          0x04    /* line out      */
        !           156:
        !           157: /*
        !           158:  * Input ports
        !           159:  */
        !           160: #define        AUDIO_MICROPHONE        0x01    /* microphone */
        !           161: #define        AUDIO_LINE_IN           0x02    /* line in       */
        !           162: #define        AUDIO_CD                0x04    /* on-board CD inputs */
        !           163: #define        AUDIO_INTERNAL_CD_IN    AUDIO_CD        /* internal CDROM */
        !           164:
        !           165: /*
        !           166:  * Audio device operations
        !           167:  */
        !           168: #define AUDIO_GETINFO  _IOR('A', 21, struct audio_info)
        !           169: #define AUDIO_SETINFO  _IOWR('A', 22, struct audio_info)
        !           170: #define AUDIO_DRAIN    _IO('A', 23)
        !           171: #define AUDIO_FLUSH    _IO('A', 24)
        !           172: #define AUDIO_WSEEK    _IOR('A', 25, u_long)
        !           173: #define AUDIO_RERROR   _IOR('A', 26, int)
        !           174: #define AUDIO_GETDEV   _IOR('A', 27, struct audio_device)
        !           175: #define AUDIO_GETENC   _IOWR('A', 28, struct audio_encoding)
        !           176: #define AUDIO_GETFD    _IOR('A', 29, int)
        !           177: #define AUDIO_SETFD    _IOWR('A', 30, int)
        !           178: #define AUDIO_PERROR   _IOR('A', 31, int)
        !           179: #define AUDIO_GETIOFFS _IOR('A', 32, struct audio_offset)
        !           180: #define AUDIO_GETOOFFS _IOR('A', 33, struct audio_offset)
        !           181: #define AUDIO_GETPROPS _IOR('A', 34, int)
        !           182: #define  AUDIO_PROP_FULLDUPLEX 0x01
        !           183: #define  AUDIO_PROP_MMAP       0x02
        !           184: #define  AUDIO_PROP_INDEPENDENT        0x04
        !           185:
        !           186: /*
        !           187:  * Mixer device
        !           188:  */
        !           189: #define AUDIO_MIN_GAIN 0
        !           190: #define AUDIO_MAX_GAIN 255
        !           191:
        !           192: typedef struct mixer_level {
        !           193:        int num_channels;
        !           194:        u_char level[8];        /* [num_channels] */
        !           195: } mixer_level_t;
        !           196: #define AUDIO_MIXER_LEVEL_MONO 0
        !           197: #define AUDIO_MIXER_LEVEL_LEFT 0
        !           198: #define AUDIO_MIXER_LEVEL_RIGHT        1
        !           199:
        !           200: /*
        !           201:  * Device operations
        !           202:  */
        !           203:
        !           204: typedef struct audio_mixer_name {
        !           205:        char name[MAX_AUDIO_DEV_LEN];
        !           206:        int msg_id;
        !           207: } audio_mixer_name_t;
        !           208:
        !           209: typedef struct mixer_devinfo {
        !           210:        int index;
        !           211:        audio_mixer_name_t label;
        !           212:        int type;
        !           213: #define AUDIO_MIXER_CLASS      0
        !           214: #define AUDIO_MIXER_ENUM       1
        !           215: #define AUDIO_MIXER_SET                2
        !           216: #define AUDIO_MIXER_VALUE      3
        !           217:        int mixer_class;
        !           218:        int next, prev;
        !           219: #define AUDIO_MIXER_LAST       -1
        !           220:        union {
        !           221:                struct audio_mixer_enum {
        !           222:                        int num_mem;
        !           223:                        struct {
        !           224:                                audio_mixer_name_t label;
        !           225:                                int ord;
        !           226:                        } member[32];
        !           227:                } e;
        !           228:                struct audio_mixer_set {
        !           229:                        int num_mem;
        !           230:                        struct {
        !           231:                                audio_mixer_name_t label;
        !           232:                                int mask;
        !           233:                        } member[32];
        !           234:                } s;
        !           235:                struct audio_mixer_value {
        !           236:                        audio_mixer_name_t units;
        !           237:                        int num_channels;
        !           238:                        int delta;
        !           239:                } v;
        !           240:        } un;
        !           241: } mixer_devinfo_t;
        !           242:
        !           243:
        !           244: typedef struct mixer_ctrl {
        !           245:        int dev;
        !           246:        int type;
        !           247:        union {
        !           248:                int ord;                /* enum */
        !           249:                int mask;               /* set */
        !           250:                mixer_level_t value;    /* value */
        !           251:        } un;
        !           252: } mixer_ctrl_t;
        !           253:
        !           254: /*
        !           255:  * Mixer operations
        !           256:  */
        !           257: #define AUDIO_MIXER_READ               _IOWR('M', 0, mixer_ctrl_t)
        !           258: #define AUDIO_MIXER_WRITE              _IOWR('M', 1, mixer_ctrl_t)
        !           259: #define AUDIO_MIXER_DEVINFO            _IOWR('M', 2, mixer_devinfo_t)
        !           260:
        !           261: /*
        !           262:  * Well known device names
        !           263:  */
        !           264: #define AudioNmicrophone       "mic"
        !           265: #define AudioNline     "line"
        !           266: #define AudioNcd       "cd"
        !           267: #define AudioNdac      "dac"
        !           268: #define AudioNaux      "aux"
        !           269: #define AudioNrecord   "record"
        !           270: #define AudioNvolume   "volume"
        !           271: #define AudioNmonitor  "monitor"
        !           272: #define AudioNtreble   "treble"
        !           273: #define AudioNmid      "mid"
        !           274: #define AudioNbass     "bass"
        !           275: #define AudioNbassboost        "bassboost"
        !           276: #define AudioNspeaker  "speaker"
        !           277: #define AudioNheadphone        "headphones"
        !           278: #define AudioNoutput   "output"
        !           279: #define AudioNinput    "input"
        !           280: #define AudioNmaster   "master"
        !           281: #define AudioNstereo   "stereo"
        !           282: #define AudioNmono     "mono"
        !           283: #define AudioNloudness "loudness"
        !           284: #define AudioNspatial  "spatial"
        !           285: #define AudioNsurround "surround"
        !           286: #define AudioNpseudo   "pseudo"
        !           287: #define AudioNmute     "mute"
        !           288: #define AudioNenhanced "enhanced"
        !           289: #define AudioNpreamp   "preamp"
        !           290: #define AudioNon       "on"
        !           291: #define AudioNoff      "off"
        !           292: #define AudioNmode     "mode"
        !           293: #define AudioNsource   "source"
        !           294: #define AudioNfmsynth  "fmsynth"
        !           295: #define AudioNwave     "wave"
        !           296: #define AudioNmidi     "midi"
        !           297: #define AudioNmixerout "mixerout"
        !           298: #define AudioNswap     "swap"  /* swap left and right channels */
        !           299: #define AudioNagc      "agc"
        !           300: #define AudioNdelay    "delay"
        !           301: #define AudioNselect   "select" /* select destination */
        !           302: #define AudioNvideo    "video"
        !           303: #define AudioNcenter   "center"
        !           304: #define AudioNdepth    "depth"
        !           305: #define AudioNlfe      "lfe"
        !           306: #define AudioNextamp   "extamp"
        !           307:
        !           308: #define AudioEmulaw            "mulaw"
        !           309: #define AudioEalaw             "alaw"
        !           310: #define AudioEadpcm            "adpcm"
        !           311: #define AudioEslinear          "slinear"
        !           312: #define AudioEslinear_le       "slinear_le"
        !           313: #define AudioEslinear_be       "slinear_be"
        !           314: #define AudioEulinear          "ulinear"
        !           315: #define AudioEulinear_le       "ulinear_le"
        !           316: #define AudioEulinear_be       "ulinear_be"
        !           317: #define AudioEmpeg_l1_stream   "mpeg_l1_stream"
        !           318: #define AudioEmpeg_l1_packets  "mpeg_l1_packets"
        !           319: #define AudioEmpeg_l1_system   "mpeg_l1_system"
        !           320: #define AudioEmpeg_l2_stream   "mpeg_l2_stream"
        !           321: #define AudioEmpeg_l2_packets  "mpeg_l2_packets"
        !           322: #define AudioEmpeg_l2_system   "mpeg_l2_system"
        !           323:
        !           324: #define AudioCinputs   "inputs"
        !           325: #define AudioCoutputs  "outputs"
        !           326: #define AudioCrecord   "record"
        !           327: #define AudioCmonitor  "monitor"
        !           328: #define AudioCequalization     "equalization"
        !           329:
        !           330: #endif /* !_SYS_AUDIOIO_H_ */

CVSweb