// freed at level change by S_ServerSounds.
unsigned int flags; // cf SFXFLAG_* defines
- int loopstart; // in sample frames. -1 if not looped
+ unsigned int loopstart; // in sample frames. equals total_length if not looped
unsigned int total_length; // in sample frames
const snd_fetcher_t *fetcher;
void *fetcher_data; // Per-sfx data for the sound fetching functions
+
+ float volume_mult; // for replay gain (multiplier to apply)
+ float volume_peak; // for replay gain (highest peak); if set to 0, ReplayGain isn't supported
};
// maximum supported speakers constant
int master_vol; // 0-255 master volume
sfx_t *sfx; // sfx number
unsigned int flags; // cf CHANNELFLAG_* defines
- unsigned int end; // end time in global paintsamples
- unsigned int lastptime; // last time this channel was painted
- unsigned int pos; // sample position in sfx
+ int pos; // sample position in sfx, negative values delay the start of the sound playback
int entnum; // to allow overriding a specific sound
int entchannel;
vec3_t origin; // origin of sound effect
// Sound fetching functions
// "start" is both an input and output parameter: it returns the actual start time of the sound buffer
-typedef const snd_buffer_t* (*snd_fetcher_getsb_t) (channel_t* ch, unsigned int *start, unsigned int nbsampleframes);
-typedef void (*snd_fetcher_endsb_t) (channel_t* ch);
-typedef void (*snd_fetcher_free_t) (sfx_t* sfx);
+typedef const snd_buffer_t* (*snd_fetcher_getsb_t) (void *sfxfetcher, void **chfetcherpointer, unsigned int *start, unsigned int nbsampleframes);
+typedef void (*snd_fetcher_endsb_t) (void *chfetcherdata);
+typedef void (*snd_fetcher_free_t) (void *sfxfetcherdata);
typedef const snd_format_t* (*snd_fetcher_getfmt_t) (sfx_t* sfx);
struct snd_fetcher_s
{
// 0 to NUM_AMBIENTS - 1 = water, etc
// NUM_AMBIENTS to NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS - 1 = normal entity sounds
// NUM_AMBIENTS + MAX_DYNAMIC_CHANNELS to total_channels = static sounds
-#define MAX_DYNAMIC_CHANNELS 128
-#define MAX_CHANNELS 516
+#define MAX_DYNAMIC_CHANNELS 512
+#define MAX_CHANNELS 1028
extern unsigned int total_channels;
extern channel_t channels[MAX_CHANNELS];
#define SND_CHANNELLAYOUT_ALSA 2
extern cvar_t snd_channellayout;
-
extern int snd_blocked; // counter. When > 0, we stop submitting sound to the audio device
extern mempool_t *snd_mempool;