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

Annotation of sys/dev/audiovar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: audiovar.h,v 1.9 2002/08/26 16:20:04 mickey Exp $     */
                      2: /*     $NetBSD: audiovar.h,v 1.18 1998/03/03 09:16:16 augustss 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:  *     From: Header: audiovar.h,v 1.3 93/07/18 14:07:25 mccanne Exp  (LBL)
                     37:  */
                     38:
                     39: /*
                     40:  * Initial/default block duration is both configurable and patchable.
                     41:  */
                     42: #ifndef AUDIO_BLK_MS
                     43: #define AUDIO_BLK_MS   50      /* 50 ms */
                     44: #endif
                     45:
                     46: #ifndef AU_RING_SIZE
                     47: #define AU_RING_SIZE           65536
                     48: #endif
                     49:
                     50: #define AUMINBUF 512
                     51: #define AUMINBLK 32
                     52: #define AUMINNOBLK 2
                     53: struct audio_ringbuffer {
                     54:        int     bufsize;        /* allocated memory */
                     55:        int     blksize;        /* I/O block size */
                     56:        int     maxblks;        /* no of blocks in ring */
                     57:        u_char  *start;         /* start of buffer area */
                     58:        u_char  *end;           /* end of buffer area */
                     59:        u_char  *inp;           /* input pointer (to buffer) */
                     60:        u_char  *outp;          /* output pointer (from buffer) */
                     61:        int     used;           /* no of used bytes */
                     62:        int     usedlow;        /* start writer when used falls below this */
                     63:        int     usedhigh;       /* stop writer when used goes above this */
                     64:        u_long  stamp;          /* bytes transferred */
                     65:        u_long  stamp_last;     /* old value of bytes transferred */
                     66:        u_long  drops;          /* missed samples from over/underrun */
                     67:        u_long  pdrops;         /* paused samples */
                     68:        char    pause;          /* transfer is paused */
                     69:        char    copying;        /* data is being copied */
                     70:        char    needfill;       /* buffer needs filling when copying is done */
                     71:        char    mmapped;        /* device is mmap()-ed */
                     72: };
                     73:
                     74: #define AUDIO_N_PORTS 4
                     75:
                     76: struct au_mixer_ports {
                     77:        int     index;
                     78:        int     master;
                     79:        int     nports;
                     80:        u_char  isenum;
                     81:        u_int   allports;
                     82:        u_int   aumask[AUDIO_N_PORTS];
                     83:        u_int   misel [AUDIO_N_PORTS];
                     84:        u_int   miport[AUDIO_N_PORTS];
                     85: };
                     86:
                     87: /*
                     88:  * Software state, per audio device.
                     89:  */
                     90: struct audio_softc {
                     91:        struct  device dev;
                     92:        void    *hw_hdl;        /* Hardware driver handle */
                     93:        struct  audio_hw_if *hw_if; /* Hardware interface */
                     94:        struct  device *sc_dev; /* Hardware device struct */
                     95:        u_char  sc_open;        /* single use device */
                     96: #define AUOPEN_READ    0x01
                     97: #define AUOPEN_WRITE   0x02
                     98:        u_char  sc_mode;        /* bitmask for RECORD/PLAY */
                     99:
                    100:        struct  selinfo sc_wsel; /* write selector */
                    101:        struct  selinfo sc_rsel; /* read selector */
                    102:        struct  proc *sc_async_audio;   /* process who wants audio SIGIO */
                    103:        struct  mixer_asyncs {
                    104:                struct mixer_asyncs *next;
                    105:                struct proc *proc;
                    106:        } *sc_async_mixer;  /* processes who want mixer SIGIO */
                    107:
                    108:        /* Sleep channels for reading and writing. */
                    109:        int     sc_rchan;
                    110:        int     sc_wchan;
                    111:
                    112:        /* Ring buffers, separate for record and play. */
                    113:        struct  audio_ringbuffer sc_rr; /* Record ring */
                    114:        struct  audio_ringbuffer sc_pr; /* Play ring */
                    115:
                    116:        u_char  sc_blkset;      /* Blocksize has been set */
                    117:
                    118:        u_char  *sc_sil_start;  /* start of silence in buffer */
                    119:        int     sc_sil_count;   /* # of silence bytes */
                    120:
                    121:        u_char  sc_rbus;        /* input dma in progress */
                    122:        u_char  sc_pbus;        /* output dma in progress */
                    123:
                    124:        struct  audio_params sc_pparams;        /* play encoding parameters */
                    125:        struct  audio_params sc_rparams;        /* record encoding parameters */
                    126:
                    127:        int     sc_eof;         /* EOF, i.e. zero sized write, counter */
                    128:        u_long  sc_wstamp;
                    129:        u_long  sc_playdrop;
                    130:
                    131:        int     sc_full_duplex; /* device in full duplex mode */
                    132:
                    133:        struct  au_mixer_ports sc_inports, sc_outports;
                    134:        int     sc_monitor_port;
                    135:
                    136:        int     sc_refcnt;
                    137:        int     sc_dying;
                    138:
                    139: #ifdef AUDIO_INTR_TIME
                    140:        u_long  sc_pfirstintr;  /* first time we saw a play interrupt */
                    141:        int     sc_pnintr;      /* number of interrupts */
                    142:        u_long  sc_plastintr;   /* last time we saw a play interrupt */
                    143:        long    sc_pblktime;    /* nominal time between interrupts */
                    144:        u_long  sc_rfirstintr;  /* first time we saw a rec interrupt */
                    145:        int     sc_rnintr;      /* number of interrupts */
                    146:        u_long  sc_rlastintr;   /* last time we saw a rec interrupt */
                    147:        long    sc_rblktime;    /* nominal time between interrupts */
                    148: #endif
                    149: };

CVSweb