|
|
1.1 root 1: // snd_loc.h -- private sound functions
2:
3: // !!! if this is changed, the asm code must change !!!
4: typedef struct
5: {
6: int left;
7: int right;
8: } portable_samplepair_t;
9:
10: typedef struct
11: {
12: int length;
13: int loopstart;
14: int speed; // not needed, because converted on load?
15: int width;
16: int stereo;
17: byte data[1]; // variable sized
18: } sfxcache_t;
19:
20: typedef struct sfx_s
21: {
22: char name[MAX_QPATH];
23: int registration_sequence;
24: sfxcache_t *cache;
25: } sfx_t;
26:
27: // a playsound_t will be generated by each call to S_StartSound,
28: // when the mixer reaches playsound->begin, the playsound will
29: // be assigned to a channel
30: typedef struct playsound_s
31: {
32: struct playsound_s *prev, *next;
33: sfx_t *sfx;
34: float volume;
35: float attenuation;
36: int entnum;
37: int entchannel;
38: qboolean fixed_origin; // use origin field instead of entnum's origin
39: vec3_t origin;
40: unsigned begin; // begin on this sample
41: } playsound_t;
42:
43: typedef struct
44: {
45: int channels;
46: int samples; // mono samples in buffer
47: int submission_chunk; // don't mix less than this #
48: int samplepos; // in mono samples
49: int samplebits;
50: int speed;
51: byte *buffer;
52: } dma_t;
53:
54: // !!! if this is changed, the asm code must change !!!
55: typedef struct
56: {
57: sfx_t *sfx; // sfx number
58: int leftvol; // 0-255 volume
59: int rightvol; // 0-255 volume
60: int end; // end time in global paintsamples
61: int pos; // sample position in sfx
62: int looping; // where to loop, -1 = no looping OBSOLETE?
63: int entnum; // to allow overriding a specific sound
64: int entchannel; //
65: vec3_t origin; // only use if fixed_origin is set
66: vec_t dist_mult; // distance multiplier (attenuation/clipK)
67: int master_vol; // 0-255 master volume
68: qboolean fixed_origin; // use origin instead of fetching entnum's origin
69: qboolean autosound; // from an entity->sound, cleared each frame
70: } channel_t;
71:
72: typedef struct
73: {
74: int rate;
75: int width;
76: int channels;
77: int loopstart;
78: int samples;
79: int dataofs; // chunk starts this many bytes from file start
80: } wavinfo_t;
81:
82:
83: /*
84: ====================================================================
85:
86: SYSTEM SPECIFIC FUNCTIONS
87:
88: ====================================================================
89: */
90:
91: // initializes cycling through a DMA buffer and returns information on it
92: qboolean SNDDMA_Init(void);
93:
94: // gets the current DMA position
95: int SNDDMA_GetDMAPos(void);
96:
97: // shutdown the DMA xfer.
98: void SNDDMA_Shutdown(void);
99:
100: void SNDDMA_BeginPainting (void);
101:
102: void SNDDMA_Submit(void);
103:
104: //====================================================================
105:
106: #define MAX_CHANNELS 32
107: extern channel_t channels[MAX_CHANNELS];
108:
109: extern int paintedtime;
110: extern int s_rawend;
111: extern vec3_t listener_origin;
112: extern vec3_t listener_forward;
113: extern vec3_t listener_right;
114: extern vec3_t listener_up;
115: extern dma_t dma;
116: extern playsound_t s_pendingplays;
117:
118: #define MAX_RAW_SAMPLES 8192
119: extern portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES];
120:
121: extern cvar_t *s_volume;
122: extern cvar_t *s_nosound;
123: extern cvar_t *s_loadas8bit;
124: extern cvar_t *s_khz;
125: extern cvar_t *s_show;
126: extern cvar_t *s_mixahead;
127: extern cvar_t *s_testsound;
128: extern cvar_t *s_primary;
129:
130: wavinfo_t GetWavinfo (char *name, byte *wav, int wavlength);
131:
132: void S_InitScaletable (void);
133:
134: sfxcache_t *S_LoadSound (sfx_t *s);
135:
136: void S_IssuePlaysound (playsound_t *ps);
137:
138: void S_PaintChannels(int endtime);
139:
140: // picks a channel based on priorities, empty slots, number of channels
141: channel_t *S_PickChannel(int entnum, int entchannel);
142:
143: // spatializes a channel
144: void S_Spatialize(channel_t *ch);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.