Annotation of quakeworld/client/sound.h, revision 1.1.1.1

1.1       root        1: /*
                      2: Copyright (C) 1996-1997 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: */
                     20: // sound.h -- client sound i/o functions
                     21: 
                     22: #ifndef __SOUND__
                     23: #define __SOUND__
                     24: 
                     25: // !!! if this is changed, it much be changed in asm_i386.h too !!!
                     26: typedef struct
                     27: {
                     28:        int left;
                     29:        int right;
                     30: } portable_samplepair_t;
                     31: 
                     32: typedef struct sfx_s
                     33: {
                     34:        char    name[MAX_QPATH];
                     35:        cache_user_t    cache;
                     36: } sfx_t;
                     37: 
                     38: // !!! if this is changed, it much be changed in asm_i386.h too !!!
                     39: typedef struct
                     40: {
                     41:        int     length;
                     42:        int     loopstart;
                     43:        int     speed;
                     44:        int     width;
                     45:        int     stereo;
                     46:        byte    data[1];                // variable sized
                     47: } sfxcache_t;
                     48: 
                     49: typedef struct
                     50: {
                     51:        qboolean                gamealive;
                     52:        qboolean                soundalive;
                     53:        qboolean                splitbuffer;
                     54:        int                             channels;
                     55:        int                             samples;                                // mono samples in buffer
                     56:        int                             submission_chunk;               // don't mix less than this #
                     57:        int                             samplepos;                              // in mono samples
                     58:        int                             samplebits;
                     59:        int                             speed;
                     60:        unsigned char   *buffer;
                     61: } dma_t;
                     62: 
                     63: // !!! if this is changed, it much be changed in asm_i386.h too !!!
                     64: typedef struct
                     65: {
                     66:        sfx_t   *sfx;                   // sfx number
                     67:        int             leftvol;                // 0-255 volume
                     68:        int             rightvol;               // 0-255 volume
                     69:        int             end;                    // end time in global paintsamples
                     70:        int     pos;                    // sample position in sfx
                     71:        int             looping;                // where to loop, -1 = no looping
                     72:        int             entnum;                 // to allow overriding a specific sound
                     73:        int             entchannel;             //
                     74:        vec3_t  origin;                 // origin of sound effect
                     75:        vec_t   dist_mult;              // distance multiplier (attenuation/clipK)
                     76:        int             master_vol;             // 0-255 master volume
                     77: } channel_t;
                     78: 
                     79: typedef struct
                     80: {
                     81:        int             rate;
                     82:        int             width;
                     83:        int             channels;
                     84:        int             loopstart;
                     85:        int             samples;
                     86:        int             dataofs;                // chunk starts this many bytes from file start
                     87: } wavinfo_t;
                     88: 
                     89: void S_Init (void);
                     90: void S_Startup (void);
                     91: void S_Shutdown (void);
                     92: void S_StartSound (int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol,  float attenuation);
                     93: void S_StaticSound (sfx_t *sfx, vec3_t origin, float vol, float attenuation);
                     94: void S_StopSound (int entnum, int entchannel);
                     95: void S_StopAllSounds(qboolean clear);
                     96: void S_ClearBuffer (void);
                     97: void S_Update (vec3_t origin, vec3_t v_forward, vec3_t v_right, vec3_t v_up);
                     98: void S_ExtraUpdate (void);
                     99: 
                    100: sfx_t *S_PrecacheSound (char *sample);
                    101: void S_TouchSound (char *sample);
                    102: void S_ClearPrecache (void);
                    103: void S_BeginPrecaching (void);
                    104: void S_EndPrecaching (void);
                    105: void S_PaintChannels(int endtime);
                    106: void S_InitPaintChannels (void);
                    107: 
                    108: // picks a channel based on priorities, empty slots, number of channels
                    109: channel_t *SND_PickChannel(int entnum, int entchannel);
                    110: 
                    111: // spatializes a channel
                    112: void SND_Spatialize(channel_t *ch);
                    113: 
                    114: // initializes cycling through a DMA buffer and returns information on it
                    115: qboolean SNDDMA_Init(void);
                    116: 
                    117: // gets the current DMA position
                    118: int SNDDMA_GetDMAPos(void);
                    119: 
                    120: // shutdown the DMA xfer.
                    121: void SNDDMA_Shutdown(void);
                    122: 
                    123: // ====================================================================
                    124: // User-setable variables
                    125: // ====================================================================
                    126: 
                    127: #define        MAX_CHANNELS                    128
                    128: #define        MAX_DYNAMIC_CHANNELS    8
                    129: 
                    130: 
                    131: extern channel_t   channels[MAX_CHANNELS];
                    132: // 0 to MAX_DYNAMIC_CHANNELS-1 = normal entity sounds
                    133: // MAX_DYNAMIC_CHANNELS to MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS -1 = water, etc
                    134: // MAX_DYNAMIC_CHANNELS + NUM_AMBIENTS to total_channels = static sounds
                    135: 
                    136: extern int                     total_channels;
                    137: 
                    138: //
                    139: // Fake dma is a synchronous faking of the DMA progress used for
                    140: // isolating performance in the renderer.  The fakedma_updates is
                    141: // number of times S_Update() is called per second.
                    142: //
                    143: 
                    144: extern qboolean                fakedma;
                    145: extern int                     fakedma_updates;
                    146: extern int             paintedtime;
                    147: extern vec3_t listener_origin;
                    148: extern vec3_t listener_forward;
                    149: extern vec3_t listener_right;
                    150: extern vec3_t listener_up;
                    151: extern volatile dma_t *shm;
                    152: extern volatile dma_t sn;
                    153: extern vec_t sound_nominal_clip_dist;
                    154: 
                    155: extern cvar_t loadas8bit;
                    156: extern cvar_t bgmvolume;
                    157: extern cvar_t volume;
                    158: 
                    159: extern qboolean        snd_initialized;
                    160: 
                    161: extern int             snd_blocked;
                    162: 
                    163: void S_LocalSound (char *s);
                    164: sfxcache_t *S_LoadSound (sfx_t *s);
                    165: 
                    166: wavinfo_t GetWavinfo (char *name, byte *wav, int wavlength);
                    167: 
                    168: void SND_InitScaletable (void);
                    169: void SNDDMA_Submit(void);
                    170: 
                    171: void S_AmbientOff (void);
                    172: void S_AmbientOn (void);
                    173: 
                    174: #endif

unix.superglobalmegacorp.com

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