Annotation of quake2/client/snd_loc.h, revision 1.1.1.3

1.1.1.3 ! root        1: /*
        !             2: Copyright (C) 1997-2001 Id Software, Inc.
        !             3: 
        !             4: This program is free software; you can redistribute it and/or
        !             5: modify it under the terms of the GNU General Public License
        !             6: as published by the Free Software Foundation; either version 2
        !             7: of the License, or (at your option) any later version.
        !             8: 
        !             9: This program is distributed in the hope that it will be useful,
        !            10: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
        !            12: 
        !            13: See the GNU General Public License for more details.
        !            14: 
        !            15: You should have received a copy of the GNU General Public License
        !            16: along with this program; if not, write to the Free Software
        !            17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
        !            18: 
        !            19: */
1.1       root       20: // snd_loc.h -- private sound functions
                     21: 
                     22: // !!! if this is changed, the asm code must change !!!
                     23: typedef struct
                     24: {
                     25:        int                     left;
                     26:        int                     right;
                     27: } portable_samplepair_t;
                     28: 
                     29: typedef struct
                     30: {
                     31:        int             length;
                     32:        int             loopstart;
                     33:        int             speed;                  // not needed, because converted on load?
                     34:        int             width;
                     35:        int             stereo;
                     36:        byte            data[1];                // variable sized
                     37: } sfxcache_t;
                     38: 
                     39: typedef struct sfx_s
                     40: {
                     41:        char            name[MAX_QPATH];
                     42:        int                     registration_sequence;
                     43:        sfxcache_t      *cache;
1.1.1.2   root       44:        char            *truename;
1.1       root       45: } sfx_t;
                     46: 
                     47: // a playsound_t will be generated by each call to S_StartSound,
                     48: // when the mixer reaches playsound->begin, the playsound will
                     49: // be assigned to a channel
                     50: typedef struct playsound_s
                     51: {
                     52:        struct playsound_s      *prev, *next;
                     53:        sfx_t           *sfx;
                     54:        float           volume;
                     55:        float           attenuation;
                     56:        int                     entnum;
                     57:        int                     entchannel;
                     58:        qboolean        fixed_origin;   // use origin field instead of entnum's origin
                     59:        vec3_t          origin;
                     60:        unsigned        begin;                  // begin on this sample
                     61: } playsound_t;
                     62: 
                     63: typedef struct
                     64: {
                     65:        int                     channels;
                     66:        int                     samples;                                // mono samples in buffer
                     67:        int                     submission_chunk;               // don't mix less than this #
                     68:        int                     samplepos;                              // in mono samples
                     69:        int                     samplebits;
                     70:        int                     speed;
                     71:        byte            *buffer;
                     72: } dma_t;
                     73: 
                     74: // !!! if this is changed, the asm code must change !!!
                     75: typedef struct
                     76: {
                     77:        sfx_t           *sfx;                   // sfx number
                     78:        int                     leftvol;                // 0-255 volume
                     79:        int                     rightvol;               // 0-255 volume
                     80:        int                     end;                    // end time in global paintsamples
                     81:        int             pos;                    // sample position in sfx
                     82:        int                     looping;                // where to loop, -1 = no looping OBSOLETE?
                     83:        int                     entnum;                 // to allow overriding a specific sound
                     84:        int                     entchannel;             //
                     85:        vec3_t          origin;                 // only use if fixed_origin is set
                     86:        vec_t           dist_mult;              // distance multiplier (attenuation/clipK)
                     87:        int                     master_vol;             // 0-255 master volume
                     88:        qboolean        fixed_origin;   // use origin instead of fetching entnum's origin
                     89:        qboolean        autosound;              // from an entity->sound, cleared each frame
                     90: } channel_t;
                     91: 
                     92: typedef struct
                     93: {
                     94:        int                     rate;
                     95:        int                     width;
                     96:        int                     channels;
                     97:        int                     loopstart;
                     98:        int                     samples;
                     99:        int                     dataofs;                // chunk starts this many bytes from file start
                    100: } wavinfo_t;
                    101: 
                    102: 
                    103: /*
                    104: ====================================================================
                    105: 
                    106:   SYSTEM SPECIFIC FUNCTIONS
                    107: 
                    108: ====================================================================
                    109: */
                    110: 
                    111: // initializes cycling through a DMA buffer and returns information on it
                    112: qboolean SNDDMA_Init(void);
                    113: 
                    114: // gets the current DMA position
                    115: int            SNDDMA_GetDMAPos(void);
                    116: 
                    117: // shutdown the DMA xfer.
                    118: void   SNDDMA_Shutdown(void);
                    119: 
                    120: void   SNDDMA_BeginPainting (void);
                    121: 
                    122: void   SNDDMA_Submit(void);
                    123: 
                    124: //====================================================================
                    125: 
                    126: #define        MAX_CHANNELS                    32
                    127: extern channel_t   channels[MAX_CHANNELS];
                    128: 
                    129: extern int             paintedtime;
                    130: extern int             s_rawend;
                    131: extern vec3_t  listener_origin;
                    132: extern vec3_t  listener_forward;
                    133: extern vec3_t  listener_right;
                    134: extern vec3_t  listener_up;
                    135: extern dma_t   dma;
                    136: extern playsound_t     s_pendingplays;
                    137: 
                    138: #define        MAX_RAW_SAMPLES 8192
                    139: extern portable_samplepair_t   s_rawsamples[MAX_RAW_SAMPLES];
                    140: 
                    141: extern cvar_t  *s_volume;
                    142: extern cvar_t  *s_nosound;
                    143: extern cvar_t  *s_loadas8bit;
                    144: extern cvar_t  *s_khz;
                    145: extern cvar_t  *s_show;
                    146: extern cvar_t  *s_mixahead;
                    147: extern cvar_t  *s_testsound;
                    148: extern cvar_t  *s_primary;
                    149: 
                    150: wavinfo_t GetWavinfo (char *name, byte *wav, int wavlength);
                    151: 
                    152: void S_InitScaletable (void);
                    153: 
                    154: sfxcache_t *S_LoadSound (sfx_t *s);
                    155: 
                    156: void S_IssuePlaysound (playsound_t *ps);
                    157: 
                    158: void S_PaintChannels(int endtime);
                    159: 
                    160: // picks a channel based on priorities, empty slots, number of channels
                    161: channel_t *S_PickChannel(int entnum, int entchannel);
                    162: 
                    163: // spatializes a channel
                    164: void S_Spatialize(channel_t *ch);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.